Asp.net ERR_CONNECTION_RESET:上载大文件时重置了连接

Asp.net ERR_CONNECTION_RESET:上载大文件时重置了连接,asp.net,iis,maxrequestlength,Asp.net,Iis,Maxrequestlength,我有一个神秘的错误,一个大于4MB的文件生成了一个随机错误。后来我意识到这是由于 . 默认情况下,上载的图像不能大于4MB 我知道这可以从web.config文件更改 当我试图处理这个错误时,通过显示另一个页面,一个不同的错误开始出现。调试时,程序立即进入应用程序错误 执行Server.GetLastError()时生成异常: [System.Web.HttpUnhandledException]{”类型的异常 “System.Web.HttpUnhandledException”被删除 抛出“

我有一个神秘的错误,一个大于4MB的文件生成了一个随机错误。后来我意识到这是由于 . 默认情况下,上载的图像不能大于4MB

我知道这可以从web.config文件更改

当我试图处理这个错误时,通过显示另一个页面,一个不同的错误开始出现。调试时,程序立即进入应用程序错误

执行
Server.GetLastError()时生成异常:

[System.Web.HttpUnhandledException]{”类型的异常 “System.Web.HttpUnhandledException”被删除 抛出“}System.Web.HttpUnhandledException

堆栈跟踪:在System.Web.UI.Page.HandleError(异常e)处 System.Web.UI.Page.ProcessRequestMain(布尔值 IncludeStages前同步点,布尔值IncludeStages后同步点) 在System.Web.UI.Page.ProcessRequest中(布尔值 IncludeStages前同步点,布尔值IncludeStages后同步点) 在System.Web.UI.Page.ProcessRequest()中 位于的System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext上下文) System.Web.UI.Page.ProcessRequest(HttpContext上下文)位于 中的ASP.businessprofile_aspx.ProcessRequest(HttpContext上下文) c:\Users\Mattew\AppData\Local\Temp\Temporary ASP.NET Files\root\4ea30077\8f66786f\App_Web_h5fmhavk.4.cs:第0行 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤, 布尔值(同步完成(&C))

如果我尝试应用程序错误方法中的任何代码,例如重定向,仍然会出现错误页面: 错误101(网络::错误连接重置):连接已重置。 显示

问题

  • 该如何处理此错误?可以提前处理吗?所以这个错误没有显示?(之前我尝试使用jquery获取文件大小并进行检查,但我发现它太复杂了

  • 如果问题1不“可回答”,是否有办法截获此错误并显示友好错误

  • 试试这个

    在web.config中的系统web下

    加上这一行

      <system.web>
    <httpRuntime executionTimeout="999" maxRequestLength="2097151"/>
    
    
    
    然后您需要检查文件大小

    if (AsyncFileUpload1.HasFile)
            {
                string FileName = Path.GetFileName(AsyncFileUpload1.PostedFile.FileName);
                string Extension = Path.GetExtension(AsyncFileUpload1.PostedFile.FileName);
                string FolderPath = ConfigurationManager.AppSettings["FolderPath"];
                string FilePath = Server.MapPath("~/xl/" + FileName);
                double filesize = (double)AsyncFileUpload1.FileBytes.Length;
                if (filesize < 106496)
                {
                   //do something
                }
                else
                {
                    Response.Write("File size must be less than 2MB.");
                }
    
    if(AsyncFileUpload1.HasFile)
    {
    字符串文件名=Path.GetFileName(AsyncFileUpload1.PostedFile.FileName);
    字符串扩展名=Path.GetExtension(AsyncFileUpload1.PostedFile.FileName);
    字符串FolderPath=ConfigurationManager.AppSettings[“FolderPath”];
    字符串FilePath=Server.MapPath(“~/xl/”+文件名);
    double filesize=(double)AsyncFileUpload1.FileBytes.Length;
    如果(文件大小<106496)
    {
    //做点什么
    }
    其他的
    {
    Write(“文件大小必须小于2MB”);
    }
    

    如果您觉得它有用,请将其标记为您的答案,否则请告诉我..

    这看起来像是IIS限制。请问这到底是什么意思?这是我的代码还是IIS的问题?我甚至不认为我使用IIS,因为我刚刚在Visual Studio上运行了一个临时服务器!您的意思是您正在使用Cassini。我不确定。问题是什么内部异常?Sry我不知道Cassini是什么:/internal exception:请求的最大长度已超出谢谢你的建议。我现在将尝试使用它。在进行更多调试后,我可以添加以下信息:-Response.Headers的Response.Headers“引发了”System.PlatformNotSupportedException“System.Collections.Sp”类型的异常Specialized.NameValueCollection{System.PlatformNotSupportedException}打开它时,我发现的相关消息是“此操作需要IIS集成管道模式。”我尝试过你的建议,它确实有效,因为maxRequestlength非常大。我对此进行了研究。但是,如果用户放置大于maxRequestlength的内容,会发生什么(尽管这种情况非常罕见),这仍然像是开发人员的“作弊”。没有更简洁的方法吗?PS我不使用异步文件上传,我应该使用它吗?使用@AnandMohanAwasthi建议的方法实际上是浪费资源。你让用户上传一个大文件,然后在服务器上拒绝它,因为它比你的lowe大r代码中的限制。我自己正在寻找更好的解决方案,但强烈感觉建议的解决方案是错误的。