2011-04-27 10 views
0

ReportViewerコントロールを使用してレポートを生成する.aspxページがあります。これは通常、Response.Redirectを使用して別のページから呼び出されます。ASP:ヘッドレスページにリダイレクトして返信

このページはいくつかの方法で使用できます。ページがMIME添付ファイルなどの応答を生成する限り、期待通りに動作します。しかし、今ではレポートを生成して電子メールの添付ファイルとして送信する機能を追加しました。このシナリオでは、ページはヘッドレスであり、単独で応答を生成しません。代わりに、呼び出しページにリダイレクトして、成功メッセージを表示します。

呼び出し元ページ - >ボタンクリック - >応答。リダイレクト(レポートページ) - >プロセスレポート - > Response.Redirect(呼び出し元ページ)

これは、Chromeでは意図したとおりに動作しますが、IE(8)では動作しません。レポートが処理され、電子メールが送信されますが、2回目のリダイレクトは機能せず、ブラウザはタイムアウトします。 ReportViewerページへのリダイレクトにServer.Transferを使用することを検討しました。 IEでタイムアウトが発生しました。

1回のリクエストで2回のリダイレクトはできませんか?私は何が欠けているのですか?これを行うには良い方法がありますか?これはRFC1945から引用 は私はアプローチがOKであることを考えさせる:

ユーザエージェントは自動的に は、このようなリダイレクト以来、通常 が無限ループを示し、より5倍以上の要求をリダイレクトすることはありません。 FYI

それはレポートが彼のブラウザに戻ってストリーミングされ、通常のシナリオでは、Responseオブジェクトと相互作用するので、私は、可能であれば、レポートビューアーページのコードビハインドですべてのレポート処理ロジックを維持したいです。

答えて

0

を行います。レポートをレンダリングしてファイルに書き込むメソッドは、Response.ClearContent()でした。これは、これが必要な別のアプリケーションから引き継いだ既存のコードでした。いったんコールを削除すると、その後のリダイレクトがIEでも動作するようになりました。

最終的な解決策は、次のようになります。

発信者のページ - >ボタンをクリック - >バリデーション - > Server.Transferを(レポート・ページ) - >プロセス・レポート - >のResponse.Redirect(発信者ページ)

発信者ページが更新され、成功メッセージが表示されます。

0

別の方法を提案してもよいですか? 発信者のページ - >ボタンをクリック - >POST - >プロセス・レポート - > GetRequestStream(すなわち、 "OK /エラー") - >このため修正はかなり平凡だった何か

+0

私はこれをすでに見ていますが、欠点があります。ページはリダイレクトされる前に電子メールアドレスを検証しているので、レポートページに移動する必要があります。レポートページには、そのページが所属していない場所に移動する必要があります。 – cdonner

関連する問題