Ole*_*lun 11 asp.net-mvc asp.net-mvc-routing
我试图了解RouteExistingFiles的工作原理.所以我创建了一个新的MVC 3互联网项目(MVC 4的行为方式相同),并将HTMLPage.html文件放到我项目的Content文件夹中.现在我去了Global.Asax文件并编辑了RegisterRoutes函数,它看起来像这样:
public static void RegisterRoutes(RouteCollection routes)
{
routes.RouteExistingFiles = true; //Look for routes before looking if a static file exists
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new {controller = "Home", action = "Index", id = UrlParameter.Optional} // Parameter defaults
);
}
Run Code Online (Sandbox Code Playgroud)
现在,当我请求本地主机时,它应该给我一个错误:XXXX/Content/HTMLPage.html,因为没有"内容"控制器,请求肯定会达到默认模式.但相反,我正在看我的HTMLPage.我在这做错了什么?
更新:我想我必须放弃.即使我正在添加像这样的路线:
routes.MapRoute("", "Content/{*anything}", new {controller = "Home", action = "Index"});
Run Code Online (Sandbox Code Playgroud)
它仍然显示HTMLPage的内容.当我请求像〜/ Content/HTMLPage这样的URL时,我按预期获得了索引页面,但是当我添加.html或.txt这样的文件扩展时,会显示内容(如果文件不存在则会出现404错误) .如果有人可以在VS2012中查看,请告诉我你得到的结果.谢谢.
Pre*_*k K 18
要启用静态文件的路由,您必须执行以下步骤.
在RouteConfig.cs中启用现有文件的路由
routes.RouteExistingFiles = true;
Run Code Online (Sandbox Code Playgroud)
为路径添加路由(确保专用路径在通用路径上方)
routes.MapRoute(
name: "staticFileRoute",
url: "Public/{file}/",
defaults: new { controller = "Home", action = "SomeAction" }
);
Run Code Online (Sandbox Code Playgroud)
接下来配置您的应用程序,以便"TransferRequestHandler"对所有静态文件的请求进行处理.在system.webServer> handlers下的Webconfig中添加以下条目.
<add name="MyCustomUrlHandler2" path="Public/*" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
Run Code Online (Sandbox Code Playgroud)
"path"的值可以更通用或具体,具体取决于您的要求.但我更喜欢根据需要总是非常具体.保持非常通用将阻止提供其他站点特定资源,如.js或css文件.例如,如果将上面设置为path ="*",那么请求甚至负责页面外观的css(在内容文件夹中)也将最终出现在Controller的操作中.你不喜欢的东西.
小智 6
Visual Studio 2012使用IIS Express.您需要告诉IIS在将磁盘文件传递到MVC路由系统之前不要拦截磁盘文件的请求.您需要将set preCondition
属性设置为配置文件中的空字符串:
<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule"
preCondition="" />
Run Code Online (Sandbox Code Playgroud)
在Win7/8中,您可以在此路径中找到配置文件: %userprofile%\Documents\IISExpress\config\applicationhost.config
归档时间: |
|
查看次数: |
10245 次 |
最近记录: |