- - PR -
大量データ表示後の Server.Transfer による画面遷移時のエラーについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-08-24 13:45
■開発環境は以下の通りです。
WindowsXP Pro Visual Studio 2003 (C#.Net) .NetFrameWork 1.1 SP1 ■問題点 以下、@、A、Bの処理を行います。 @FormA.aspx よりFormB.aspxに下記の記述にて画面遷移する。 →Server.Transfer("FormB.aspxのURL"); AFormB.aspx のPage_LoadイベントにてDBからの取得データをデータグリッドに表示。 BFormB.aspx のボタン(閉じる)クリック時に下記の記述にて FormA.aspxに遷移する。(戻る) →Server.Transfer("FormA.aspxのURL"); このとき、 Aにて表示するデータが少量の場合は、Bの動作が正常に行われますが、 Aにて表示するデータが大量の場合に、Bの動作が異常となり、 (ブラウザがハングアップしたような状態になる) 「ページを表示できません。」のHTMLが表示されてしまいます。 Bのボタンクリック時には、FormB.aspxのPage_Loadのイベントが発生 するはずなので、そこにブレークポイントを張ってみましたが、 そのブレークポイントに到達する前に上記エラーとなっています。 ※推測ですが、Bの際に現在表示中のHTMLをどこかのエリアに 一時的に退避しようとして、データが大きすぎるがためにタイムアウトの ような状態となっているのでは、と考えています。 書籍等で調査してみましたが、正直、画面遷移時の動作が 良く把握できません。 どなたか、本現象の原因と対応方法についてご教授願います。 宜しくお願い致します。 | ||||
|
投稿日時: 2006-08-24 14:01
大量データとはどの程度のサイズでしょうか?
はずしているかもしれませんが、web.configのmaxRequestLengthの値を大きくすることで改善されませんか? | ||||
|
投稿日時: 2006-08-24 14:04
大量のデータということなので、実際にはすべてのHTMLがブラウザ内にダウンロードされる
前にボタンをクリックしてしまい、動作が正常でなくなっている、ということはありませんか? | ||||
|
投稿日時: 2006-08-24 15:16
まるでServer.Transferが正常に動作しないというような書き方ですが、 ご自分でも見ているようですけど、Server.Transferは全く無関係ですよね? ポストバック時にViewStateのサイズが巨大になって、デフォルトの リクエストサイズ制限値である4MBを超えてしまっているのが原因でしょう。 もし、ただ結果を表示するだけのページなのであれば、DataGridのViewStateを オフにすればいいと思います。 そうでない場合は…微妙ですね… | ||||
|
投稿日時: 2006-08-24 15:19
NAL-6295です。
そうでない場合は、ViewStateをサーバ側で保持する等が考えられますが、 サーバ側にかかる負荷を考えなくてはいけません。 | ||||
|
投稿日時: 2006-08-25 16:56
burton999さん、どっとねっとふぁんさん、なちゃさん、NAL-6295さん
maxRequestLengthの値の調整と、データグリッドの ViewStateプロパティをオフにすることで解決しました。 ご回答有難うございました。 |
1