我正在開發asp網絡mvc 5中的新網站。我想創建自定義的404頁面,用戶試圖訪問舊網址將被重定向。問題是我想爲這個錯誤頁面創建視圖並從url中獲取參數,試圖識別用戶試圖訪問的產品。但我還沒有找到解決方案如何創建它。所有編輯webconfig的示例都是這樣的:Asp網404頁面參數
<defaultRedirect="~/Errors/NotFound" mode="Off">
<error statusCode="404" redirect="~/Errors/NotFound" />
</customErrors>
不會傳遞參數。我試圖禁用自定義錯誤,並在Global.asax中的變化:
public void Application_Error(object sender, EventArgs e)
{
Exception exception = Server.GetLastError();
Response.Clear();
HttpException httpException = exception as HttpException;
if (httpException != null)
{
if(httpException.GetHttpCode() == 404)
{
var rd = new RouteData();
rd.Values["controller"] = "Errors";
rd.Values["action"] = "NotFound";
rd.Values.Add("queryString", HttpContext.Current.Request.Url.AbsolutePath);
IController c = new ErrorsController();
c.Execute(new RequestContext(new HttpContextWrapper(Context), rd));
}
}
}
但它仍然會返回非標準錯誤頁面
我還沒有看到重定向到一個錯誤頁面的那種方式之前。你嘗試過使用'return RedirectToAction(「NotFound」,「Errors」);'? –
此外,如果您只是將錯誤頁面輸入到「http:// localhost:57623/Errors/NotFound」,會發生什麼? –
我不相信傳遞參數的作用(至少不是在每種情況下 - 請記住,如果錯誤發生在IIS中,重定向發生在甚至調用ASP.NET之前)。但是,[本文](https://dusted.codes/demystifying-aspnet-mvc-5-error-pages-and-error-logging)會覆蓋這些選項,因爲它們適用於自定義頁面和日誌記錄。請注意,傳遞參數並不常見,因爲最佳做法是記錄錯誤併爲每個狀態代碼顯示一個通用頁面,否則黑客可以使用網站的輸出(參數)來查找漏洞。 – NightOwl888