找回密码
 注册
查看: 858|回复: 0

ASP.net 4.0下使用default.htm默认文档

[复制链接]
发表于 2011-9-4 17:24:21 | 显示全部楼层 |阅读模式
遇到这样一个问题:使用asp.net4.0+asp.net  mvc2开发时候,将首页生成为静态的default.htm文件,但部署到IIS7上,使用asp.net4.0  Classic线程池,会出现404,IIS的默认文档也包括default.htm这个文件。  
百思不得其解之后估计是System.Web.Routing的问题,将首页默认为 /Home/Index 了。如果在 /Home/Index  添加跳转代码:  

HttpContext.Current.Response.Redirect("default.htm");  

这表明上解决问题,但访问www.abc.com的时候会跳转到www.abc.com/default.htm ,  这对SEO影响是非常大的,甚至没人愿意跟你换链接。  
所以只能通过一个方法,让当前请求的路径 与 默认的路由表无法匹配。这样就会读到default.htm这个默认文档了!  
全局配置文件的默认路由代码如下:  

routes.MapRoute(  
"Default",  
"{controller}/{action}/{id}",  
new { controller = "Home", action = "Index",id =?"" }  
);  

正是由于上面的路由,导致IIS将/Home/Index做为了首页,如果我们将action="Index"修改为action="IndexPage"。  
那么结果还是一样的,为什么呢?因为还是能够与这条路由匹配。解决方法只有让请求路径与路由不匹配!  
聪明的您一定想到了,我们应该通过对路由加上约束使其不匹配  
修改后的默认路由为:  

routes.MapRoute(  
"Default",  
"{controller}/{action}/{id}",  
new { controller = "Home", action = "1", id =?"" },  
new { controller="[A-Za-z]+",action = "[A-Za-z]*" }  
);  

我们让默认的action的值1与约束的正则不匹配,也就让请求路径与这条路由不匹配。问题完美解决!                  
                 
                感谢
刘铭
的投稿
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|Archiver|手机版|小黑屋|鼠窝站长论坛

GMT+8, 2024-12-28 20:11 , Processed in 0.045058 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表