2010-06-08 144 views
2

我試圖趕上404錯誤,如this...如何404錯誤asp.net mvc 2 IIS 7?

  1. 當我嘗試加載http://localhost:11415/wfwe/wefwe/ - 所有的好作品。
  2. 當我嘗試加載http://localhost:11415/order/ - 失敗(錯誤的的RouteData必須包含一個名爲「動作」與非空字符串值的項目。)
  3. 當我嘗試加載http://localhost:11415/Images/ - 失敗,錯誤文件不存在

我的路線:

 routes.Add("Order", new LowercaseRoute("Order/{action}/{id}", 
               new RouteValueDictionary(
                new 
                 { 
                  controller = "Order", 
                  action = "", 
                  id = UrlParameter.Optional 
                 }), 
               new MvcRouteHandler())); 
routes.Add("NotFound", new LowercaseRoute("{*url}", new RouteValueDictionary(
               new 
               { 
                controller = "Pages", 
                action = "Http404", 
               }), 
              new MvcRouteHandler())); 

爲什麼航線NOTFOUND - 不要抓住所有的404錯誤。當我嘗試上傳到我的主機,並嘗試404我得到這個錯誤(NotFound路線根本​​不工作) 404 - 文件或目錄未找到。 您正在查找的資源可能已被刪除,名稱已更改或暫時不可用。

我這個工作了一整天,但理智最多......請幫我

回答

2

我有這樣的:

routes.Add("NotFound", new LowercaseRoute("{*url}", new RouteValueDictionary(
               new 
               { 
                controller = "Pages", 
                action = "Http404", 
               }), 
              new MvcRouteHandler())); 

,這在web.config中

<customErrors mode="On"> 
</customErrors> 

<modules runAllManagedModulesForAllRequests="true"/> 
<handlers/> 
<httpErrors> 
    <remove statusCode="404"/> 
    <error statusCode="404" path="/page/http404/" responseMode="ExecuteURL"/> 
</httpErrors> 

這工作我多麼希望。

2

當我嘗試加載http://localhost:11415/order/ - 失敗(有錯誤的RouteData必須包含一個名爲「行動」的項目與非-empty字符串值)

因此:

新{控制器= 「訂單」, ACTI on =「」,id = UrlParameter.Optional}

您需要指定一個操作。

當我嘗試加載http://localhost:11415/Images/ - 失敗,出現錯誤文件不存在

如果您的服務器上Images文件夾,然後將「攔截」的請求沒有讓他們通過對MVC管道。

+0

非常感謝。爲什麼在託管我得到standart httperrors 404 - 文件或目錄未找到。您正在尋找的資源可能已被刪除,名稱已更改或暫時不可用,而不是我的404 erorr? – Dmitriy 2010-06-08 14:21:11

+0

@Dmitriy:因爲「你的404」將由一些自定義視圖提供,只有在MVC處理請求時纔會返回。在文件不是的情況下。在這種情況下,您可以在web.config中指定一個靜態頁面來返回。 – 2010-06-08 14:25:06

+0

哦,不。在localhost上使用url:http:// localhost:11415/wfwe/wefwe/- 一切都很好,但在現場 - 這很糟糕。我的網站:http://www.kidemon.ru/wqefwef/we - 標準錯誤,不是我的。 – Dmitriy 2010-06-08 14:28:51