首页 新闻 会员 周边 捐助

IIS7+经典管道模式 部署ASP.NET MV4 怎么设置 /news/detail/1.html

0
悬赏园豆:10 [已解决问题] 解决于 2014-09-10 08:50

如题

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}
                ); 
西安-DB的主页 西安-DB | 初学一级 | 园豆:4
提问于:2014-08-19 14:12
< >
分享
最佳答案
0

在IIS中创建.html到ASP.NET的映射试试:

收获园豆:5
dudu | 高人七级 |园豆:29568 | 2014-08-19 14:30

谢谢 园长解答,这种方式我尝试过了,会导致真正的HTML文件无法访问。

西安-DB | 园豆:4 (初学一级) | 2014-08-19 14:38
其他回答(1)
0

经典模式是不支持路由的,所以会报告你这个错误。

DUDU的解决方案是解决这个问题的最简单方案。

此外,你还可以通过web.config来进一步配置,只有满足一定路径的才走这条路或满足一定路径的禁止走这条路。

收获园豆:5
519740105 | 园豆:5810 (大侠五级) | 2014-08-19 15:00

我遇到的问题是,线上环境已经运行了一段时间而且有了固定客户的网站,现在有新的需求是在某些访问路径添加 .html 后缀。    如果切换成集成管道 担心会有不可预知的风险。

支持(0) 反对(0) 西安-DB | 园豆:4 (初学一级) | 2014-08-19 16:01

@西安-DB: 按照我目前的经验来说,从经典模式切换到集成模式的问题不大,只是在初始转换的时候要检测下运行的应用程序池、.net的版本、权限等。其它的问题,只要一条通过了,基本都能通过。

而且,无论如何,总是要切换到IIS7的集成版本的,迟痛不如早痛。

 

而解决你的问题的还有一个方案,就是使用陷阱:捕获404错误。

当访问一个.html页面而页面不存在的时候,IIS抛出404错误,我们可以对该站点的404错误设置成指定的页面(.net的页面或者asp页面都可以),由页面拦截错误时检测实际的URL,满足某些条件则执行页面跳转。

 

还有一个解决方案是:自己写一个HTTPMODULE,拦截所有的html页面请求,分析请求路径,满足你需求的内部执行跳转(server.transfer)。

支持(0) 反对(0) 519740105 | 园豆:5810 (大侠五级) | 2014-08-19 16:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册