超过fileupload大小时重定向到错误

时间:2011-01-04 09:48:41

标签: c# asp.net httpmodule

我试图在最大文件容量大小超出时将用户引导到错误页面。对于这个我做以下事情:

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的文件时,它显示“连接重置”错误。 我该怎么办呢。

7 个答案:

答案 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)。