Asp.net-Mvc
URL 中的點導致 404 與 ASP.NET mvc 和 IIS
我有一個項目要求我的 URL 在路徑中有點。例如,我可能有一個 URL,例如 www.example.com/people/michael.phhelps
帶有點的 URL 會生成 404。我的路由很好。如果我傳入邁克爾菲爾普斯,沒有點,那麼一切正常。如果我添加點,我會收到 404 錯誤。範例站點在帶有 IIS8 Express 的 Windows 7 上執行。URLScan 未執行。
我嘗試將以下內容添加到我的 web.config 中:
<security> <requestFiltering allowDoubleEscaping="true"/> </security>不幸的是,這並沒有什麼不同。我剛剛收到 404.0 Not Found 錯誤。
這是一個 MVC4 項目,但我認為這無關緊要。我的路由工作正常,並且我期望的參數在那裡,直到它們包含一個點。
我需要配置什麼才能在我的 URL 中添加點?
我通過編輯我的網站的 HTTP 處理程序來完成這項工作。對於我的需要,這很好用並解決了我的問題。
我只是添加了一個新的 HTTP 處理程序來查找特定的路徑條件。如果請求匹配,它會正確發送到 .NET 進行處理。我對 URLRewrite hack 或啟用 RAMMFAR 的解決方案更滿意。
例如,讓 .NET 處理 URL www.example.com/people/michael.phelps 將以下行添加到您網站的 web.config
system.webServer / handlers元素中:<add name="ApiURIs-ISAPI-Integrated-4.0" path="/people/*" verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />編輯
還有其他文章表明此問題的解決方案是
RAMMFAR或RunAllManagedModulesForAllRequests。啟用此選項將為所有請求啟用所有託管模組。這意味著靜態文件(如圖像、PDF 和其他所有文件)將在不需要時由 .NET 處理。除非您有特定情況,否則最好不要使用此選項。