这可能是一个简单的问题,但我无法让它发挥作用.
我在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
更奇怪的是,如果我使用默认的Controller和Action(即Home / Index)调用该路由的Url.Action,它会创建一个没有尾部斜杠的URL,然后它无法识别.我真的需要它使用和不使用尾部斜杠.
解决方法
问题是ASP.net 4.0不会将以扩展名结尾的URL路由到MVC.他们这样做是为了加快对静态文件的请求.
See this link
你可以做什么:
1)配置UrlRoutingModule以路由所有托管和非托管请求(默认只是路由托管请求).
缺点:可能对性能不利.
06000
2)配置处理.com,.net.组织等扩展
缺点:感觉像黑客.
06001