Asp.net-Mvc

URL 中的點導致 404 與 ASP.NET mvc 和 IIS

  • July 30, 2012

我有一個項目要求我的 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.configsystem.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" />

編輯

還有其他文章表明此問題的解決方案是RAMMFARRunAllManagedModulesForAllRequests。啟用此選項將為所有請求啟用所有託管模組。這意味著靜態文件(如圖像、PDF 和其他所有文件)將在不需要時由 .NET 處理。除非您有特定情況,否則最好不要使用此選項。

引用自:https://stackoverflow.com/questions/11728846