ASP.net 4.0下使用default.htm默认文档
遇到这样一个问题:使用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.0592jia.com的时候会跳转到www.0592jia.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与约束的正则不匹配,也就让请求路径与这条路由不匹配。问题完美解决!
原创文章转载请注明出处:http://www.ops.cc/archive.aspx/view/aspnet4-default/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述