web-dev-qa-db-ja.com

ファイルアップロードの10分後にASP.NETMVCがエラー504を取得する

SQL Server 2008R2で動作するASP.NETMVC2 Webアプリケーションがあり、IIS 6.2で実行されています。特定の管理者が約5000のドキュメントをアップロードする必要がある機能があり、それらの名前がデータベースに保存されている間、処理されてサーバーに保存されます。

問題は、クライアント側で、ファイルのアップロードが開始されてから10分後に、エラー504タイムアウト、ゲートウェイタイムアウトが発生することです。 web.configのhttpRuntime.ExecutionTimeout値を変更しましたが、問題は解決しませんでした。

私を制限する値がどこに保存されているか誰かが知っていますか?

これが私のweb.configファイルです: http://Pastebin.com/VXs0BFTp

編集:また、エラー504を受信した後、データベースのデータストレージはとにかく進み続けます。

2
SantLev

あなたの説明から、あなたのクライアント-> Webサーバー接続のタイムアウトはおそらくプロキシの使用に関連しているようです。サーバーが10分を超えてファイルを処理する場合、クライアントはタイムリーに応答を受信しませんが、Webサーバーはそれ以上処理できます。

httpRuntime.ExecutionTimeout IISスレッドがシャットダウンされる前に要求を処理できる量を指定するため、問題に影響を与えることはありません。

ファイルのサーバー側の処理を最適化できない場合は、再設計することをお勧めします。考えられる1つの方法は、すべてのファイルをアップロードし、できるだけ早くクライアントに応答して、非同期で処理することです。もちろん、クライアントUIは、処理のステータス(たとえば、パーセント)を表示できるように変更する必要があります。

アップロードプロセスに時間がかかりすぎる(つまり数分)場合、解決策は、管理者にファイルをネットワークの場所に転送させ、その後処理を開始させることです(Webサーバーにはその場所から読み取る権限が必要です)。あまりユーザーフレンドリーではありませんが、管理者は通常のユーザーではありません。

0
Alexei