zoukankan      html  css  js  c++  java
  • 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/

     

     

  • 相关阅读:
    团队博客18
    团队博客17
    团队博客16
    团队博客15
    团队博客14
    团队博客13
    团队博客12
    课堂作业08--MVC框架的具体应用
    课堂作业07--MVC框架
    课堂作业06--23中设计模式
  • 原文地址:https://www.cnblogs.com/newmin/p/2134619.html
Copyright © 2011-2022 走看看