我试图在最大文件容量大小超出时将用户引导到错误页面。对于这个我做以下事情:
public void Init(HttpApplication application)
{
application.BeginRequest += new EventHandler(application_BeginRequest);
}
void application_BeginRequest(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
if (context.Request.ContentLength > 4096000)
{
context.Response.Redirect("~/Error.aspx");
}
}
public void Dispose()
{
}
但是在上传大小超过max filesize的文件时,它显示“连接重置”错误。 我该怎么办呢。
答案 0 :(得分:1)
答案 1 :(得分:0)
即使在您的应用程序启动之前,ASP.NET运行时也可能会拒绝该请求。检查web.config中设置的最大请求长度 - 该值应该大于应用程序所期望的值:
IIS6 / IIS7(经典管道和集成管道):
<system.web>
<!-- The value is in KB -->
<httpRuntime maxRequestLength="4096" />
</system.web>
IIS7(集成管道):
<system.webServer>
<security>
<requestFiltering>
<!-- The value is in bytes -->
<requestLimits maxAllowedContentLength="209715200" />
</requestFiltering>
</security>
</system.webServer>
希望这会有所帮助。
- 帕维尔
答案 2 :(得分:0)
好的,你可能会收到一个ThreadAbortException,这就是重置连接的原因。
请参阅此知识库文章以获取解决方法: ThreadAbortException Occurs If You Use Response.End, Response.Redirect, or Server.Transfer
- 帕维尔
答案 3 :(得分:0)
我相信要从处理程序中正确执行此操作,您需要在发送响应/重定向之前读取请求中的所有数据。或者,您可以从ISAPI筛选器执行此操作,避免必须读取数据。
答案 4 :(得分:0)
您可以使用工具包AsyncFileUpload控件,然后在客户端捕获错误并重定向到错误页面。
AsyncFileUpload: How do I hide the max request length exceeded alert error?
<asp:AsyncFileUpload ID="fileUpload"
runat="server" OnClientUploadError="onUploadError"
OnClientUploadComplete="uploadComplete"
OnUploadedComplete="OnUploadComplete" />
<script language="javascript" type="text/javascript">
function onUploadError()
{
//Redirect to error page.
}
function uploadComplete()
{
}
</script>
答案 5 :(得分:0)
答案 6 :(得分:0)
在post之后,原因可能只是重定向到本地站点:
它似乎不起作用 服务器是本地的(通过使用 localhost,本地ip或 http://machinename/)。只是浏览器 完全像服务器一样反应 放弃连接 - 连接 重置由对等/连接重置 (FF)/无法显示网页(IE)。