这可能是一个简单的问题,但我无法使其正常工作。
我在RouteConfig中指定了此路由
routes.MapRoute(
name: "DefaultSiteRoute",
url: "{accountid}/{hostname}/{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, accountid = UrlParameter.Optional, hostname = UrlParameter.Optional }
);
而且对于这样的网址也可以正常工作
/123456/www.test.com/
或这个
/123456/www.test.com/Controller/Action
但这不能应付
/123456/www.test.com
我得到一个IIS 404
奇怪的是,如果我Url.Action
使用默认的Controller and Action(即Home / Index)调用该路由,它将创建一个没有尾随斜杠的url,然后它无法识别。无论是否有斜杠,我真的都需要它来工作。
问题是ASP.net 4.0无法路由以MVC扩展名结尾的URL。他们这样做是为了加快对静态文件的请求。看到这个链接
你可以做什么:
1)配置UrlRoutingModule路由所有托管和非托管请求(默认仅路由托管请求)。
缺点:可能会降低性能。
<system.webServer> <modules> <remove name ="UrlRoutingModule-4.0"/> <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="runtimeVersionv4.0" /> </modules> <system.webServer>
2)配置为处理.com,.net。组织等扩展
缺点:感觉像黑客一样。
<system.webServer> <handlers> <add name="UrlRoutingHandler" type="System.Web.Routing.UrlRoutingHandler, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" path="*.com" verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS"/>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句