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

  • 質問

  • 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

回答

  • こちらの件、自己解決いたしました。

    マイクロソフトに問い合わせようと、MS以外の部分を確認していたのですが、WAFを解さずにアクセスしたところ、テストサーバーと同じ動作になりました。

    おそらく、WAFがまとまったCSVを検査するために、動作を変えているものと思われます。

    申し訳ありませんでした。


    2012年11月22日 7:45

すべての返信

  • 直接の回答ではありませんが、気になった点をレスします・・・

    > まずSQLクエリが終了するのを待ち、たとえば5分かかるクエリであれば、
    > 5分後に、クライアント側でダウンロードダイアログが表示されてしまいます。

    それが普通だと思います。さらに、5 分もかかるのであれば、そのクエリは非同期で実行して、すぐにスレッドプールにスレッドを戻さないと、スループットが低下するという問題があると思います。要求が多いと、最悪、スレッドプールが飽和状態になって、サーバーが要求を受けられなくなるかもしれません。

    詳しくは以下のページを見てください。

    ASP.NET の非同期プログラミングを使ったスケール変換可能なアプリケーション
    http://msdn.microsoft.com/ja-jp/magazine/cc163463.aspx

     

    2012年11月17日 7:34
  • 返信ありがとうございます。

    確認したかったことは、テスト機と同様の動作をさせる方法だったのですが、別件として調査しようとしていた件が、ワーカープロセスの応答不能状態でして、この2つの問題はやはり関連している可能性があるということですね。

    スレッドプール状態を確認する方法が分かれば、そちらの状況も分かるかもしれませんね。

    ちなみに、ASP(Active Server Page)でも.NETでも同じと考えてよろしいのでしょうか?

    2012年11月20日 1:16
  • > ちなみに、ASP(Active Server Page)でも.NETでも同じと
    > 考えてよろしいのでしょうか?

    クラシック ASP でしたか。

    お役に立てずすみませんが、自分はクラッシック ASP は全く
    わかりません。

    2012年11月20日 13:39
  • >クラシック ASP でしたか。

    >お役に立てずすみませんが、自分はクラッシック ASP は全くわかりません。

    いえ、こちらこそ分かりにくくてすいません。

    ヒントを頂くのはすごくありがたいです。

    2012年11月21日 5:22
  • こちらの件、自己解決いたしました。

    マイクロソフトに問い合わせようと、MS以外の部分を確認していたのですが、WAFを解さずにアクセスしたところ、テストサーバーと同じ動作になりました。

    おそらく、WAFがまとまったCSVを検査するために、動作を変えているものと思われます。

    申し訳ありませんでした。


    2012年11月22日 7:45