トップ回答者
ASPでcsvファイルをダウンロードさせる際の動作について、教えてください。(応答バッファじゃないかと思うのですが。)

質問
-
Windows Server 2008 R2 SP1環境で、IIS7.5を稼動させており、Windows Updateは全て実施しております。
ASPで、SQL Serverから引っ張ってきたデータを、CSVファイルでダウンロードさせるコードを書いてもらっているのですが、動作がテスト環境と本番環境で違ってしまい困っております。(ASPの開発、コーディングは別の担当がやっているので、詳細がわからないのですがソースを見ることは出来ます。)
SQL Serverから取得できたデータを順にダウンロードさせるようにしたいのですが、テスト環境では、問題なく、まず保存ダイアログが表示され、少しずつダウンロードされるのですが、
本番環境では、まずSQLクエリが終了するのを待ち、たとえば5分かかるクエリであれば、5分後に、クライアント側でダウンロードダイアログが表示されてしまいます。
同じソースを使っているのであれば、IISのASPの設定かと思ったので、該当箇所と思われる「バッファー処理を有効にする」という設定を「False」にしてみましたが何も変わらず、また、同等の記述がASPファイル内に必要なのではと思い、ダウンロード用のスクリプトを確認しましたが、「バッファー処理を有効にする」と同じ意味と思われる「Response.Buffer」は「Response.Buffer = false」と書かれていました。
本番環境で、SQLクエリ結果を受け取りつつ少しずつダウンロードさせる様にしたいのですが、本番環境を頻繁に変更できないので、逆にテスト環境を、本番環境の様にクエリが終了するまでダウンロードダイアログが出ない様に設定し、設定箇所を特定したいのですが、同じように設定しても動作は一向に変わりません。これは、どこの設定を変更すればいいのか、わかりませんでしょうか?2012年11月16日 8:56
回答
すべての返信
-
直接の回答ではありませんが、気になった点をレスします・・・
> まずSQLクエリが終了するのを待ち、たとえば5分かかるクエリであれば、
> 5分後に、クライアント側でダウンロードダイアログが表示されてしまいます。それが普通だと思います。さらに、5 分もかかるのであれば、そのクエリは非同期で実行して、すぐにスレッドプールにスレッドを戻さないと、スループットが低下するという問題があると思います。要求が多いと、最悪、スレッドプールが飽和状態になって、サーバーが要求を受けられなくなるかもしれません。
詳しくは以下のページを見てください。
ASP.NET の非同期プログラミングを使ったスケール変換可能なアプリケーション
http://msdn.microsoft.com/ja-jp/magazine/cc163463.aspx2012年11月17日 7:34