8

4MBを超えるファイルがランダムエラーを生成するという不思議なエラーが発生しました。後で私はそれがhttpmaxrequestlengthが原因であることに気づきました 。デフォルトでアップロードする場合、画像は4MBを超えることはできません。

これはweb.configファイルから変更できることを私は知っています。

このエラーに対応しようとすると、別のページを表示して、別のエラーがポップアップし始めました。デバッグ中、プログラムはすぐにapplication_errorに入ります。

Server.GetLastError()生成された例外を実行する場合:

[System.Web.HttpUnhandledException]{"タイプ'System.Web.HttpUnhandledException'の例外がスローされました。"}System.Web.HttpUnhandledException

スタックトレース:System.Web.UI.Page.HandleError(Exception e)at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint、Boolean includeStagesAfterAsyncPoint)at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint、Boolean includeStagesAfterAsyncPoint)at System.Web.UI.Page.ProcessRequest()at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)at System.Web.UI.Page.ProcessRequest(HttpContext context)at 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 System.Web.HttpApplication.ExecuteStep(IExecutionStep step、Boolean&での.IExecutionStep.Execute()完了同期)

リダイレクトなど、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 に答える