1. 程式人生 > >MVC路由配置,實現偽靜態。

MVC路由配置,實現偽靜態。

前段時間,研究了一下mvc路由配置偽靜態,在網上扒了很多最後還是行不通,所以我現在把這些心得整理出來,供大家分享:

1、mvc中預設路由配置是:http://localhost:24409/Home/Index

routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

2、如果要設定成以 .html結尾頁面的頁面,必須要從新配置路由。

      第一步:

routes.MapRoute(
name: "index",
url: "index.html",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

  最後按F5啟動專案,瀏覽器中輸入地址 http://localhost:24409/Home/Index 

 還是報錯:

  第二步:Webconfig檔案中找到system.webServer節點下面的 modules節點、runAllManagedModulesForAllRequests值並設定value=true;

最後再重新啟動專案,發現成功了。

總結:1、由於路由配置檔案中設定的路由,是html結尾的靜態頁面檔案,所以導致程式不會去處理靜態檔案(.html .css .js .jpeg等)的請求了。如果你將runAllManagedModulesForAllRequests設定為true,那麼ASP.NET強制使所有自定義的HttpModule既處理靜態檔案(.html .css .js .jpeg等)請求又處理託管檔案(aspx, ascx 及 MVC等)請求,預設情況下runAllManagedModulesForAllRequests是為false的。

2、還有一種原因導致不成功,大家都知道在用vs建立MVC專案時(非空專案時),專案裡自帶了驗證、過濾方法。所以記得刪除不必要的方法。最好是建一個Empty的MVC專案。