ASP.net 4.0下使用default.htm預設文件

來源:互聯網
上載者:User
  遇到這樣一個問題:使用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/

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.