2011-11-10 8 views
2

ファイルや小さなファイルをアップロードしようとしていますが、大きなファイルは2時16分以降に失敗するようです。私が約20分と3600時間かかると思う最大ファイル長は1時間です。間違った属性を設定しましたか?ASPX C#ページタイムアウト

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
<system.web> 
    <authorization> 
     <deny users="?" /> 
    </authorization> 
    <httpRuntime executionTimeout="3600" maxRequestLength="2097151" requestValidationMode="2.0"/> 
</system.web> 
</configuration> 
+0

ファイルサイズは? –

+0

なぜ私はこれを得ているのだろうか?この問題は、 など、さまざまな問題が原因で発生する可能性があります。?インターネット接続が失われました。 •このウェブサイトは一時的に利用できません。 ?ドメインネームサーバー(DNS)に到達できません。 ?ドメインネームサーバー(DNS)には、Webサイトのドメインの一覧がありません。 •アドレスに入力ミスがある可能性があります。 •HTTPS(セキュア)アドレスの場合は、[ツール]、[インターネットオプション]、[詳細設定]の順にクリックし、セキュリティセクションでSSLおよびTLSプロトコルが有効になっていることを確認します。 – StephanM

+0

アップロードコントロールを使用して大きなファイルをアップロードしています。 – StephanM

答えて

1

通常の問題は、アップロードされたファイルを受信したコードは、バイト配列(バイト[])

にその結果を置くことで、これらのバイト配列は、メモリ内に完全に保持されています。あなたのOSのバージョン、Webサーバー、メモリの量などに応じて、通常約800MBのメモリ使用量のどこかで、IISはワーカープロセスをリサイクルします。これは、単一の要求が過剰な量のメモリを使用しているため、サーバー全体が停止しないように行われます。

サードパーティのファイルアップローダは、一度に複数のファイルをストリームするためにさまざまな手法を使用します。メモリ使用量が1キロバイトを超えることなく、複数のGBのファイルをアップロードするために使用できます。

ファイルに接触するコードのすべてのレイヤーについて、ストリーミング技術を維持する必要もあります。つまり、コンポーネントがファイルに書き込む場合は、ストリームとチャンクが必要で、バイト全体に累積されず、ファイルへ。コードが最終的にDBのBLOB列にファイルに書き込むときのDitto。