- PR -

1回のリクエストで、二つのレスポンス。

1
投稿者投稿内容
kami
ベテラン
会議室デビュー日: 2004/08/21
投稿数: 95
お住まい・勤務地: 大手町
投稿日時: 2006-07-13 22:53
こんばんわ。

どうにかできないかと思い、質問させて頂きます。

やりたい事:題名通りです・・・汗
環境:Win2003Server
   ASP.NET(VB 2002)
   SQLserver

今現在の処理をサクット記述します。

ページロード--------------------
ログインIDのアクセス権限より、公開許可データをSelectする。
SelectしたデータをWebページに表示する。
(10件単位のページング)
各件(各行)にはラジオボタンがあり、ラジオボタンで選択後、実行ボタンを押す
感じです。(実行ボタンを押すとラジオボタンで選択されているデータをダウンロードを行う。)
--------------------------------

実行ボタン押下時、
ラジオボタンより、どのファイルを選択されたかを調べ、
DBの配信済みフラグを付ける。
DB更新後、Response.FileWrite(その他ヘッダーなど含む) により、
ダウンロードダイアログを表示する。(*1)

ダウンロード処理時に、自ページをResponse.Redirectを行い、ページロード内の処理にて、表をリフレッシュする。(*2)(配信したファイルは表示しないようにするため)
--------------------------------------------------

ここで、問題となる点が*2の部分です。
ボタン押下というクライアントからのリクエストに対して、Response.FileWriteによりレスポンスを返しているため、その後のResponse.Redirectが有効とならない。

この点を調べた所、HTTPプロトコルの定義により、クライアント、サーバ間の通信においては、リクエスト:レスポンス が 1:1 の関係で行われるとの事でした。

似たような案件などで、上記のようにレスポンスを返した後の処理で画面をリフレッシュする方法などをご存知の方が居ましたら、ご教授下さい。

よろしくお願いいたします。
でっち6号
大ベテラン
会議室デビュー日: 2005/01/31
投稿数: 176
お住まい・勤務地: Kawasaki
投稿日時: 2006-07-14 00:09
今晩は、でっちです。
window.openで新規ASPXを開き、ダウンロード処理をそちらで行えば良いと思います。

参考スレ
1

スキルアップ/キャリアアップ(JOB@IT)