Asp.net-Mvc
asp.net mvc 沒有收到帶有句點的 GET 請求
我正在使用 .net4.5rc 和 MVC4.0rc
下面的程式碼取自 MVC webapi 應用程序,但我對於 reular asp.net mvc 有相同的行為
我的 registerroutes 程式碼如下所示
routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapHttpRoute( name: "R1", routeTemplate: "product/{id}", defaults: new { controller="Product", id = RouteParameter.Optional } );這適用於其中沒有句點的 ID。但是,當我要一個帶有句點的產品時,呼叫似乎沒有到達 ASP.NET
當我按照類似文章的建議使用下面的設置時,它在有尾隨 / 但沒有它時不起作用
總之
http://mysite.com/product/AZ0 //works http://mysite.com/product/AZ.0/ //work with relaxedUrlToFileSystemMapping http://mysite.com/product/AZ.0 //does not work響應是 404,我猜這是 IIS 返回的,不涉及 ASP.NET。當我使用上面最後一個 URL 執行 routedebugger 時,我什至沒有得到 routedebugger 的東西
當有一個帶有模式的 URL 時,我如何讓 IIS 將控制項傳遞給 ASP.NET:mysite.com/product/{id},無論 id 中是否有句點。
謝謝。
讓我自己回答這個問題。添加 URL 重寫解決了這個問題。下面添加到 web.config 中的程式碼告訴如果 URL 的格式為 (product/ ),則用結尾的“/”重寫 Url *。*然後它不再作為文件處理,而是作為正常 MVC 處理。
<system.webServer> .... <rewrite> <rules> <rule name="Add trailing slash" stopProcessing="true"> <match url="(product/.*\..*[^/])$" /> <action type="Rewrite" url="{R:1}/" /> </rule> </rules> </rewrite> </system.webServer>