首页 / ASP.NET MVC / 正文

ASP.NET MVC4 URL路径中带点号出现404错误的解决方案

35013 发布于: 2014-06-04 读完约需5分钟

由于项目需求,需要在Url路径中使用如下的路径,如:

http://siteexample.com/promo/domain.com

其中路径中的最后一部分表示一个网站的域名首先这个请求路径是由控制器Promo来控制的,其Action为Index,根据路径需求,得采用路由来映射了,具体的映射规则如下:

 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错误

mvc-dot-404

开始一直以为是路由配置规则不正确,经过多次测试仍不解,后把domain.com参数换成id数字进行测试结果正常,于是考虑是参数的问题。最后确认是由于参数中有点号,被IIS过滤规则给过滤掉,问题找到了,自然就要想解决方案了。

参考了一些资料,亲测至少有两种以上的解决办法:1.在网站的配置文件web.config中做如下设置:

<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

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

上一篇: 让你的IIS虚拟主机支持.htaccess文件实现URL Rewrite(转载)

下一篇: IIS 8.5安装URL Rewrite并实现PHP的URL重写

本文永久链接码友网 » ASP.NET MVC4 URL路径中带点号出现404错误的解决方案

分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册