如题
IIS7+经典管道模式 部署ASP.NET MV4 怎么设置.HTML 后缀访问路径
http://www.xx.com/news/detail/1.html
,同时站点中的原生 html 静态文件也要能够正常访问。
我写了路由在集成模式下可用,在经典模式下不可用。
routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}.html", defaults: new {controller = "Home", action = "Index", id = UrlParameter.Optional} );
在IIS中创建.html到ASP.NET的映射试试:
谢谢 园长解答,这种方式我尝试过了,会导致真正的HTML文件无法访问。
经典模式是不支持路由的,所以会报告你这个错误。
DUDU的解决方案是解决这个问题的最简单方案。
此外,你还可以通过web.config来进一步配置,只有满足一定路径的才走这条路或满足一定路径的禁止走这条路。
我遇到的问题是,线上环境已经运行了一段时间而且有了固定客户的网站,现在有新的需求是在某些访问路径添加 .html 后缀。 如果切换成集成管道 担心会有不可预知的风险。
@西安-DB: 按照我目前的经验来说,从经典模式切换到集成模式的问题不大,只是在初始转换的时候要检测下运行的应用程序池、.net的版本、权限等。其它的问题,只要一条通过了,基本都能通过。
而且,无论如何,总是要切换到IIS7的集成版本的,迟痛不如早痛。
而解决你的问题的还有一个方案,就是使用陷阱:捕获404错误。
当访问一个.html页面而页面不存在的时候,IIS抛出404错误,我们可以对该站点的404错误设置成指定的页面(.net的页面或者asp页面都可以),由页面拦截错误时检测实际的URL,满足某些条件则执行页面跳转。
还有一个解决方案是:自己写一个HTTPMODULE,拦截所有的html页面请求,分析请求路径,满足你需求的内部执行跳转(server.transfer)。