【发布时间】:2010-08-12 20:52:58
【问题描述】:
如果用户尝试上传大于最大请求长度的文件,我想显示自定义错误页面。
完全没有代码,上传大文件时出现一个非常神秘的“页面无法显示”错误(不是著名的黄色 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),它应该会给出这个神秘的错误(没有重定向)。
【问题讨论】:
标签: c# asp.net-mvc-2 redirect error-handling