【解決方法】ASP.NET に 3.92 MB ファイルをアップロードした後、サーバーで 504 ゲートウェイ タイムアウト エラーが発生します

プログラミングQA


3.92 MB ファイルをアップロードした後、サーバーで 504 ゲートウェイ タイムアウト エラーが発生します

しかし、レコードはテーブルに正常に挿入されました

ウェブサーバーとアプリサーバーが 1 つずつあります

ウェブサーバー上:

– Excel ファイルを読み込んでおり、それをデータ可能に変換して Excel に保存しています
別のフォルダーに移すのはほとんどかかりません 1分20秒

– 次に、次のコードを使用してそのデータテーブルをアプリサーバーに渡しました

sProposal = Task.Run(async () =>
 {
   UploadDetails x = await webAPIClient.CallWebAPI<UploadDetails, DataTable>(dataTable, ConfigurationManager.AppSettings["Url"].ToString());
   return x;
                                    });
                                }

アプリサーバー上
– datatableを取得し、sqlbulkcopyに渡し、tableに挿入します。ほとんど取得できない成功メッセージのみを返します。 1分数秒

以下は私のweb.configです

<location path="upl">
   <system.web>
     <!--The default size is 4096 kilobytes (4 MB). MaxValue is 2147483647 KB (2 TB)-->
     <!-- 100 MB in kilobytes -->
     <httpRuntime maxRequestLength="2147483647" />
   </system.web>
   <system.webServer>
     <security>
       <requestFiltering>          
         <!--The default size is 30000000 bytes (28.6 MB). MaxValue is 4294967295 bytes (4 GB)-->
         <!-- 100 MB in bytes -->
         <requestLimits maxAllowedContentLength="4294967295" />
       </requestFiltering>
     </security>
   </system.webServer>
 </location>

maxRequestLength、maxAllowedContentLengthも増加させましたが、それでもサーバー上で504ゲートウェイタイムアウトが表示されました

ただし、レコードは正常に挿入されました (合計 45,345 レコード)

私が試したこと:

また、maxRequestLength、maxAllowedContentLength、およびプロファイルコードを増やします。どのコードに時間がかかりますが、それでも504エラーが発生します

解決策 1

リクエストの最大長はタイムアウト エラーとは関係ありません。 大きすぎるファイルをアップロードしようとすると、404 エラーが発生します。 いいえ タイムアウトエラーです。

引用:

Excelファイルを読み込んでデータ可能に変換し、Excelを別のフォルダーに保存します。1分20秒もかかりません。

datatableを取得してsqlbulkcopyに渡し、tableに挿入し、成功メッセージのみを返しますが、1分数秒はかかりません

したがって、合計実行時間は 2 分 20 秒を超える、つまり 140 秒以上になります。

デフォルトの実行タイムアウトはアプリケーションによって異なります。

。ネットフレームワーク:

Web フォームと同期 MVC アクション: 110 秒。
非同期 MVC アクション: 45 秒。

.NETコア:

120秒。

これらの数値はすべて、コードの実行にかかる時間の長さをはるかに下回っています。

コードをより速く実行できない場合は、実行タイムアウト制限を増やす必要があります。

。ネットフレームワーク

Web フォームと同期 MVC アクション:
web.configで、設定します configuration/system.web/httpRuntime/@executionTimeout 必要な秒数に – 例: 300

非同期 MVC アクション:
追加 AsyncTimeout 属性[^] アクションに追加し、必要なミリ秒数を指定します。例: [AsyncTimeout(300_000)]

.NETコア

web.configで、設定します configuration/system.webServer/aspNetCore/@requestTimeout 必要な時間まで – 例: 00:05:00

解決策 2

これは昨日投稿した質問と同じです ASP.NET でファイルをアップロード中に 504 ゲートウェイ タイムアウト エラーが発生する[^]。 再投稿しないでください。 追加情報がある場合は、を使用してください 質問を改善する 元の投稿にリンクを追加し、何が機能していないのかについての完全な詳細を追加します。

コメント

タイトルとURLをコピーしました