8

我有一个神秘的错误,大于 4MB 的文件会产生随机错误。后来我意识到这是由于httpmaxrequestlength引起的 。默认上传时,图片不能大于 4MB。

我知道这可以从 web.config 文件中改变。

当我试图通过显示另一个页面来解决这个错误时,一个不同的错误开始弹出。调试时,程序立即进入application_error。

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

[System.Web.HttpUnhandledException] {“引发了‘System.Web.HttpUnhandledException’类型的异常。”} System.Web.HttpUnhandledException

堆栈跟踪:在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 在 System.Web.UI.Page.HandleError(Exception e) 在 System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 在 System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) 在 System.Web.UI.Page.ProcessRequest() 在 System.Web.UI.Page.ProcessRequest(HttpContext context) 在 ASP.businessprofile_aspx.ProcessRequest(HttpContext上下文)在 c:\Users\Mattew\AppData\Local\Temp\Temporary ASP.NET Files\root\4ea30077\8f66786f\App_Web_h5fmhavk.4.cs:line 0 at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication .IExecutionStep.Execute() 在 System.Web.HttpApplication.ExecuteStep(IExecutionStep 步骤,布尔值&同步完成)

如果我尝试 application_error 方法中的任何代码,例如重定向,仍然是错误页面:错误 101 (net::ERR_CONNECTION_RESET):连接已重置。被展示。

问题

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

  2. 如果问题 1 不是“可回答的”,有没有办法拦截这个错误并显示一个友好的错误?

4

1 回答 1

11

试试这个。

在 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.");
            }

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

于 2011-11-15T05:22:22.567 回答