1. ホーム
  2. asp.net

"Session state has created a session id, but cannot save it because the response was already flushed by the application." の原因は何でしょうか?

2023-07-07 07:58:22

質問

この障害が断続的に発生しています。

このリンクは、私が Google で見つけることができたものをかなりよく要約しています。 http://www.wacdesigns.com/2009/02/03/session-state-has-created-a-session-id-but-cannot-save-it-because-the-response-was-already-flushed-by-the-application/

基本的には、Web Config 設定 DisplayWhenNewSession を設定してみるか、Session_OnStart で Session.SessionID を取得してセッション状態を起動させてみるといいと書いてあります。

しかし、誰もが

a) これに対する説明を持っている

あるいはもっと良いのは、b) 試行錯誤の末の解決策を持っていることです。

私は、http応答ヘッダに影響を与える何かを行った後、応答をフラッシュすることができないことに気づきました。これを実行すると、エラーが発生します。 毎回 しかし、これは断続的です。SessionIDは確かに、ASPXページやPage_Load(私のすべてのフラッシュが呼び出される場所)において何かする前に、ページレスポンスの最初にASP.NETによって自動的に作成されるはずです。

更新します。 よく考えてみると、これはブラウザにファイルをストリーミングするときに起こっていることに気づきました。ブラウザのほとんどは、実際には検索エンジンのボットです。私はダウンロードを開始し、ブラウザを閉じることによってこのエラーを再現することができますので、おそらくブラウザはダウンロード操作をキャンセルする前にダウンロードが完了するまで待っていないでしょう。私はこれを他の通常のページでも見たことがありますが、99%はダウンロード ページです。

どのように解決するのですか?

あります!

global.asaxファイルの中で、このようにします。

void Session_Start(object sender, EventArgs e) 
{
    // Code that runs when a new session is started
    string sessionId = Session.SessionID;
}

とても簡単です。うまくいくんです!