イベントで使用Respose.Write
して いますが、エラーが発生しますPage_Unload
このコンテキストでは応答を利用できません。
使用できない理由を教えてください。
protected void Page_Unload(object sender, System.EventArgs e)
{
Response.Write(" hi ");
}
ASP.NETページLifecyleのMSDN記事から:
アンロード段階では、ページとそのコントロールがレンダリングされているため、応答ストリームにそれ以上の変更を加えることはできません。Response.Writeメソッドなどのメソッドを呼び出そうとすると、ページは例外をスローします。
したがって、ドキュメントによると、あなたがやろうとしていることは実際にはサポートされていません。
これは論理的に理にかなっています。ページがアンロードされているため、ブラウザはそのページからさらに応答する必要はありません。これは、実際にはクリーンアップが実行される場所です。
いくつかの一般的なユースケースは、MSDNにも記載されています。
ユーザーコントロールの場合:
...このイベントを使用して、コントロール固有のデータベース接続を閉じるなど、特定のコントロールの最終的なクリーンアップを実行します。
そして、ページ全体について:
...このイベントを使用して、開いているファイルやデータベース接続を閉じたり、ログ記録やその他のリクエスト固有のタスクを終了したりするなど、最終的なクリーンアップ作業を行います。
これはUnload
、ページがレンダリングされた後にイベントがトリガーされるためです。ページはすでに完成しており、ブラウザに向かう途中で、書き込むことができる応答ストリームはもうありません。
Unloadイベントは、ページがクライアントに返送された後に発生します。その場合、応答に書き込むには遅すぎます。
ASP.NETページのライフサイクルのドキュメントを参照してください。
注意-アンロード段階では、ページとそのコントロールがレンダリングされているため、応答ストリームにそれ以上の変更を加えることはできません。メソッドなどのメソッドを呼び出そうとするとResponse.Write
、ページは。をスローしexception
ます。
その時点で、ページはすでにHTMLでレンダリングされており、HTMLを変更することはできません。それでも、すべてのページオブジェクトを使用できます。
ASP.NETページのライフサイクルを参照してください
ページのライフサイクルを確認してください:http://msdn.microsoft.com/en-us/library/ms178472.aspx
UnLoadはレンダリング後に行われるため、この時点で、可能な限りすべてを画面に出力しました。