3

このブログで説明されている手法を使用して、サーバーにドキュメントをアップロードしようとしています。

すべてが順調に進んでおり、ドキュメントを問題なくアップロードできます。唯一の問題は、web.configで定義されているアップロード制限を超えるファイルをアップロードしようとしたときです。

<location path="Documents/Documents/Add">
   <system.web>
      <httpRuntime maxRequestLength="25600"/>
   </system.web>   
</location>

問題は、サーバーから応答がないことです。実際、Visual Studioでデバッグする場合、アクションはヒットしません。

フィドラーでさらに調査すると、私は...

504: ReadResponse() failed: The server did not return a response for this request.  

....しかし、これはChromeでフィドラーが実行されているときにのみ取得されます。fiddlerが実行されていない場合、chromeはステータスコードなしで「Failed」と表示され、$()。ajaxフォーム呼び出しのerror()はヒットしません。

また、このSO投稿にもまったく同じ問題があります。ただし、エラー応答が発生していないため、現在「loading.gif」が回転しているだけなので、ファイルサイズを超えたときにユーザーにフィードバックを提供する方法を知りたいです。

4

1 に答える 1

3

大きすぎるファイルをアップロードしようとする前にファイルサイズをキャッチできるように、クライアント側でのファイルサイズのチェックに関するこのSOの質問を確認してください。 jQueryでダウンロードリンクの背後にあるファイルのサイズを見つける

編集

ファイルサイズがweb.configファイルの設定よりも大きい場合、サーバーは例外をスローするため、サーバー側で処理する場合は、いくつかの操作を実行できます。

1)最大ファイルサイズを大きくすると、アップロードコードで小さいサイズを検証し、サイズが大きすぎる場合は失敗を返すことができます。もちろん、彼らがあなたの新しいサイズよりもさらに大きな何かを試みたとしても、それでも失敗します。

2)global.asaxファイルでエラーをキャッチし、それを使って何かをします。応答ヘッダーを設定し、falseなどを返します。このオプションを開始するには、「最大リクエスト長を超えました」をキャッチするをチェックしてください。

3)以前に設定したJQueryオプションを使用してクライアント側で処理するか、Flashを使用してサイズを確認します。

基本的に、ファイルが大きすぎることをサーバーが通知するのを待つのは遅すぎます。ファイルが大きすぎることがわかる前に、ファイルはそこまで移動する必要があります。これにより、サーバーに大きなヒットが発生します。通常は、可能であればクライアントで確認する方法を見つけることをお勧めします。

于 2011-10-26T23:59:31.497 に答える