各位.net大神求助啊~asp.net中的RouteConfig.cs文件下的路由配置默认为:
  routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );现在我配置成:
  routes.MapRoute("Default2", "{A}/{B}.html",
            new { controller = "Home2", action = "Index"});目的是为了将发往A/B.html的请求由Home2的index处理,但是这样配置一直是404错误,如下图:根据网上的回答,我在web.config中的<system.webServer>中加入    
<modules runAllManagedModulesForAllRequests="true" />还是不行,将iis的应用程序连接池改为集成模式也是不行,改过iis中的处理程序映射(在其中添加了.html的脚本映射都是不行),但是我将上面的url:{A}/{B}.html改为{A}/{B}就是可以的,郁闷啊,现在是将A/B映射到Home2的index处理是可以的,将A/B.html就不行~有谁能给个解答吗?

解决方案 »

  1.   

    MVC 的路由机制 可以在 routes.MapRoute改地址重写
      

  2.   

    B指的是 action名字,而不是你的 网页名称。
      

  3.   


    那我要映射到.html等静态文件该怎么做啊?
      

  4.   


    那我要映射到.html等静态文件该怎么做啊?用户访问mvc网站,是先跑到action,然后action才返回了view视图。所以
    不存在用户访问 .html的网页,然后调用action。(这样是本末倒置的。)
    如果action跳转到.html的话,redict就可以了。当然,如果你一定要这么干,那么你可以再html页面的Load加载时,ajax请求action,去做一些操作。并返回一些结果。
      

  5.   


    我是要做一个反向代理,将请求的.html页面映射到mvc的action里处理完毕后再发往真正的请求地址,所以我自己的服务器并不存在这个.html文件,因此在浏览器上输入这个url老是返回404~这应该是默认的iis将.html当成静态文件来处理了,郁闷~
      

  6.   

    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
        <modules runAllManagedModulesForAllRequests="true" />
     
    在web.config中加入第三行即可,来自:http://blog.csdn.net/gulijiang2008/article/details/39890675
      

  7.   

    default mapRoute: {controller}/{action}/{id}.html
    在MVC3可以,MVC4以上要在web.config中加入第三行即可:
     <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
        <modules runAllManagedModulesForAllRequests="true" />