2008-10-20 90 views
2

我可能忽略了一些非常簡單的東西,但我試圖將所有不良URL重定向到根據條件篩選URL的操作,然後將301重定向到合適的頁面或發出404頁面。將所有請求重定向到IIS6上的ASP.NET MVC

爲此我有一個這樣的路線在我的路由表的末尾:

routes.MapRoute("Error", "{*url}", new { controller = "Main", action = "Error" }); 

而且像這樣的動作:

public ActionResult Error(string url) 
{ 
     if (/* Conditions are met... */) 
     { 
      Response.Status = "301 Moved Permanently"; 
      Response.AddHeader("Location", /* Destination URL */); 
      Response.End(); 
     } 

     Response.StatusCode = 404; 
     return View(/* 404 page... */)); 
} 

這工作完全在本地。

但是,當部署到IIS6時,不包含.mvc(例如oldfile.php)的URL將不會發送到ASP.NET進程進行路由。

有沒有簡單的解決方案/我可以忽略一些東西?

編輯: 這與this question有關,但是在IIS6下沒有.mvc的URL不會被髮送用於ASP.NET MVC處理。

回答

7

當您部署到服務器時,不會調用ASP.Net。

我會在IIS中設置通配符映射,以便您的請求將使用ASP.Net來提供請求。

打開IIS管理器,右鍵單擊您的應用程序,轉到屬性,然後選擇主目錄選項卡,然後單擊配置。在通配符應用程序映射下,單擊插入(而不是添加,這會在上面感到困惑),然後爲「可執行文件」輸入C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll,並取消選中驗證文件是否存在。

欲瞭解更多信息,請訪問與此問題幫我在源頭:http://blog.codeville.net/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/

+0

的我第一次嘗試這個我沒注意到,「確認文件是否存在」需要的是聽之任之。 – Pedro 2017-07-26 19:57:53

相關問題