2009-11-25 67 views
2

在ASP.net 3.5和MVC 1.0中工作。在ASP.net中的自定義錯誤頁面中返回請求的URL

我想要做的是在自定義錯誤頁面中返回請求的URL,它會生成一個404錯誤。就像Google在其錯誤頁面上所做的一樣(http://www.google.com/test)。

例如。

很抱歉,但是請求的地址「http://www.domain.com/nonexistantpage.aspx」在此服務器上不存在。

什麼是完成這種軟404的最佳方式?

此外,作爲一個側面說明:任何熟悉的地方回來的醜陋... NOTFOUND aspxerrorpath =/awdawd廢話的自定義錯誤頁,同時保持請求的URL在瀏覽器的地址欄? ...我懷疑有關server.transfer的事情?

回答

0

退房與此相關的話題,這些資源:

總之,你可以完成一個類似谷歌的執行與通過定義一個catch保持請求的URL - 執行特定控制器操作的所有路由。

//defined below all other routes 
routes.MapRoute(
    "Catch All", 
    "{*path}", 
    new { controller = "Error", action = "NotFound" } 
); 

public ActionResult NotFound(string path) 
{ 
    Response.StatusCode = (int)HttpStatusCode.NotFound; 
    ViewData["path"] = path; //or Request.Url.ToString() if you want full url 
    return View(); 
} 

雖然這不是一個完整的解決方案。假設你已經離開了默認的路由映射,任何匹配{Controller}/{action}/{id}的東西仍然會拋出傳統的404或自定義錯誤。如果您真的希望讓所有路線選擇任何沒有映射到特定控制器/操作或參數類型的路線,那麼您必須明確定義所有可能的路線 - 不一定非常簡單。

相關問題