3

イベントで使用Respose.Writeして いますが、エラーが発生しますPage_Unload

このコンテキストでは応答を利用できません。

使用できない理由を教えてください。

protected void Page_Unload(object sender, System.EventArgs e)
{
  Response.Write(" hi ");
}
4

5 に答える 5

4

ASP.NETページLifecyleのMSDN記事から:

アンロード段階では、ページとそのコントロールがレンダリングされているため、応答ストリームにそれ以上の変更を加えることはできません。Response.Writeメソッドなどのメソッドを呼び出そうとすると、ページは例外をスローします

したがって、ドキュメントによると、あなたがやろうとしていることは実際にはサポートされていません。

これは論理的に理にかなっています。ページがアンロードされているため、ブラウザはそのページからさらに応答する必要はありません。これは、実際にはクリーンアップが実行される場所です。

いくつかの一般的なユースケースは、MSDNにも記載されています。

ユーザーコントロールの場合:

...このイベントを使用して、コントロール固有のデータベース接続を閉じるなど、特定のコントロールの最終的なクリーンアップを実行します。

そして、ページ全体について:

...このイベントを使用して、開いているファイルやデータベース接続を閉じたり、ログ記録やその他のリクエスト固有のタスクを終了したりするなど、最終的なクリーンアップ作業を行います。

于 2012-04-24T13:13:19.640 に答える
4

これはUnload、ページがレンダリングされた後にイベントがトリガーされるためです。ページはすでに完成しており、ブラウザに向かう途中で、書き込むことができる応答ストリームはもうありません。

于 2012-04-24T13:13:26.103 に答える
3

Unloadイベントは、ページがクライアントに返送された後に発生します。その場合、応答に書き込むには遅すぎます。

ASP.NETページのライフサイクルのドキュメントを参照してください。

于 2012-04-24T13:13:44.513 に答える
2

注意-アンロード段階では、ページとそのコントロールがレンダリングされているため、応答ストリームにそれ以上の変更を加えることはできません。メソッドなどのメソッドを呼び出そうとするとResponse.Write、ページは。をスローしexceptionます。

その時点で、ページはすでにHTMLでレンダリングされており、HTMLを変更することはできません。それでも、すべてのページオブジェクトを使用できます。

ASP.NETページのライフサイクルを参照してください

于 2012-04-24T13:13:16.473 に答える
2

ページのライフサイクルを確認してください:http://msdn.microsoft.com/en-us/library/ms178472.aspx

UnLoadはレンダリング後に行われるため、この時点で、可能な限りすべてを画面に出力しました。

于 2012-04-24T13:13:25.037 に答える