问题描述
各位.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>中加入<modulesrunAllManagedModulesForAllRequests="true"/>还是不行,将iis的应用程序连接池改为集成模式也是不行,改过iis中的处理程序映射(在其中添加了.html的脚本映射都是不行),但是我将上面的url:{A}/{B}.html改为{A}/{B}就是可以的,郁闷啊,现在是将A/B映射到Home2的index处理是可以的,将A/B.html就不行~有谁能给个解答吗?
解决方案
解决方案二:
MVC的路由机制可以在routes.MapRoute改地址重写
解决方案三:
B指的是action名字,而不是你的网页名称。
解决方案四:
引用
B指的是action名字,而不是你的网页名称。
那我要映射到.html等静态文件该怎么做啊?
解决方案五:
引用3楼dream_successor的回复:
引用
B指的是action名字,而不是你的网页名称。那我要映射到.html等静态文件该怎么做啊?
用户访问mvc网站,是先跑到action,然后action才返回了view视图。所以不存在用户访问.html的网页,然后调用action。(这样是本末倒置的。)如果action跳转到.html的话,redict就可以了。当然,如果你一定要这么干,那么你可以再html页面的Load加载时,ajax请求action,去做一些操作。并返回一些结果。
解决方案六:
引用
引用3楼dream_successor的回复:引用B指的是action名字,而不是你的网页名称。那我要映射到.html等静态文件该怎么做啊?用户访问mvc网站,是先跑到action,然后action才返回了view视图。所以不存在用户访问.html的网页,然后调用action。(这样是本末倒置的。)如果action跳转到.html的话,redict就可以了。当然,如果你一定要这么干,那么你可以再html页面的Load加载时,ajax请求action,去做一些操作。并返回一些结果。
我是要做一个反向代理,将请求的.html页面映射到mvc的action里处理完毕后再发往真正的请求地址,所以我自己的服务器并不存在这个.html文件,因此在浏览器上输入这个url老是返回404~这应该是默认的iis将.html当成静态文件来处理了,郁闷~