版权保护声明:本文未经许可,禁止任何形式转载,违者必究。
由于项目需求,需要在Url路径中使用如下的路径,如:http://siteexample.com/promo/domain.com
其中路径中的最后一部分表示一个网站的域名
首先这个请求路径是由控制器Promo来控制的,其Action为Index,根据路径需求,得采用路由来映射了,具体的映射规则如下:
开始一直以为是路由配置规则不正确,经过多次测试仍不解,后把domain.com参数换成id数字进行测试结果正常,于是考虑是参数的问题。最后确认是由于参数中有点号,被IIS过滤规则给过滤掉,问题找到了,自然就要想解决方案了,参考了一些资料,亲测至少有两种以上的解决办法:
1.在网站的配置文件web.config中做如下设置:
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute("Store Details", @"promo/{domain}", new { controller = "Promo", action = "Index", domain = UrlParameter.Optional } ); //默认路由映射规则 routes.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); }在配置好路由规则后以为万事大吉了,但测试结果却在意料之外,出现如下404错误

<system.webServer> <modules runAllManagedModulesForAllRequests="true"> </modules> </system.webServer>2.同样是配置web.config文件:
<system.webServer> <!--<modules runAllManagedModulesForAllRequests="true"> </modules>--> <handlers> <add name="UrlRoutingHandler" type="System.Web.Routing.UrlRoutingHandler, System.Web" path="/promo/*" verb="*" /> </handlers> </system.webServer>两种方案任选其一即可解决此问题,希望对你有帮助,^_^ 参考网址: 1.http://www.hanselman.com/blog/BackToBasicsDynamicImageGenerationASPNETControllersRoutingIHttpHandlersAndRunAllManagedModulesForAllRequests.aspx 2.http://stackoverflow.com/questions/16581184/mvc4-404-errors
版权保护声明:本文未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册