我對ASP.NET和MVC相當新,我一直在將ASP.NET MVC應用程序遷移到ASP.NET MVC Core。在前者框架,我能夠處理一個HttpException以下臭名昭著的錯誤:HTTP錯誤404.13的自定義錯誤頁面ASP.NET核心MVC
HTTP Error 404.13 - Not Found
The request filtering module is configured to deny a request that exceeds the request content length.
我知道我可以增加最大上傳允許長度,這是目前30MB的默認,但我的目標是呈現用戶通過一個友好的錯誤頁面解釋發生的事情,而不是增加允許的限制。
在ASP.NET我這樣做對我的Global.asax下面的代碼:
private void Application_Error(object sender, EventArgs e)
{
var ex = Server.GetLastError();
var httpException = ex as HttpException ?? ex.InnerException as HttpException;
if (httpException == null) return;
if (httpException.WebEventCode == WebEventCodes.RuntimeErrorPostTooLarge)
{
//handle the error
Response.Redirect("~/Error/UploadTooLarge"); //Redirect to my custom error page
}
}
我似乎不能幾個小時的研究後發現在Asp.Net核心本的替代品。 我相信我需要在我的Startup.cs Configure方法中插入一些中間件來實現一個自定義錯誤頁面來處理HttpException並重定向它,但是我在這件事上真的迷失了方向。
我已經設法成功地使用自定義錯誤頁的HTTP錯誤下面的中間件如404 - 找不到或403 - 通過使用我的配置方法如下禁伐:
app.UseStatusCodePagesWithReExecute("/Error/StatusCode{0}");
除了控制器:
public class ErrorController : Controller
{
public IActionResult StatusCode404()
{
return View(viewName: "CustomNotFound");
}
public IActionResult StatusCode403()
{
return View("CustomForbiden");
}
}
和相應的意見。但是,404.13錯誤(上傳太大)不會被我當前的中間件處理。我相信IIS會顯示錯誤,因爲它不是由Web應用程序處理的。
對MVC Core的重要推薦。我刪除了我的中間件並添加了'httpErrors'模塊,並且由於每個錯誤的路徑屬性都允許一個值,例如'path =「/ Error/CustomAction」'我可以使用錯誤控制器處理自定義錯誤頁面/視圖。 –
這是一個能夠通過視覺工作室進行實時/遠程連接的情況,這很棒..否則,這是一個打擊或者失敗,並且不斷重複一次發佈/測試,希望獲得最好的結果是一個真正的痛點。 – razblack
我很好奇,但是如果你想通過說一個咆哮系統來處理消息給客戶端,你會發生這種重定向會發生什麼。 – razblack