如果用戶嘗試上傳大於最大請求長度的文件,我想顯示自定義錯誤頁面。如何從ASP.NET MVC 2中的Application_Error重定向?
根本沒有代碼,當上傳一個大文件(而不是着名的黃色ASP錯誤頁面)時,我得到一個非常神祕的「頁面無法顯示」錯誤 - 與您獲得相同類型的瀏覽器錯誤你已離線。這讓我感到奇怪,可能與這個問題有關。
我將此添加到我的Global.asax文件:
//simplification
public void Application_Error(object sender, EventArgs e)
{
Response.Redirect("http://www.google.com", false); //This IS getting hit
}
自定義錯誤是關閉在我的Web.config文件(必須保持這種方式)。
看起來很簡單吧?但無論出於何種原因,重定向只是沒有做任何事情。它正在受到打擊。它正在執行該行。我已將endResponse
設置爲true來嘗試它;沒有不同。
我試圖與重定向之前以下兩行:
Response.Clear();
Server.ClearError();
第一我假定將解決存在的標頭已被髮送後(這不是的情況下)的重定向;第二我真的不知道會有什麼不同,但我已經看到類似StackOverflow問題/答案中的代碼,所以我想我會嘗試它。
所以 - 有沒有什麼特殊的關於這個特定的錯誤,使重定向不可能?
如果您想嘗試一下自己(和明白我的意思對奇怪的錯誤非頁面),這裏的一些快速copypasta添加到VS的標準MVC應用程序:
Views -> Home -> Index.aspx
<asp:Content ContentPlaceHolderID="MainContent" runat="server">
<form enctype="multipart/form-data" method="post" action="<%= Url.Action("Upload") %>">
<input type="file" name="required-to-post" />
<input type="submit" value="Upload" />
</form>
</asp:Content>
Controllers -> HomeController.cs
public ActionResult Upload()
{
return View("Index");
}
Global.asax
protected void Application_Error()
{
Response.Redirect("http://www.google.com", false);
}
然後只上傳一個大文件(5MB),它應該給這個神祕的錯誤(不重定向)。