Asp.net 无法保存会话状态,应用程序已刷新该状态

Asp.net 无法保存会话状态,应用程序已刷新该状态,asp.net,session-state,Asp.net,Session State,在我的Web应用程序中,我遇到了一个错误。“会话状态已创建会话ID,但无法保存,因为应用程序已刷新它。” 我在谷歌上搜索了这个问题,发现我必须将会话id存储在Global.asax session_Start事件中 string id = Session.SessionID; 但它已经存在于我的应用程序中。我不确定是什么导致了这个问题。我也没有使用Response.Flush() 任何人都可以解释并解决此问题。发生这种情况的原因是,有时(取决于web.config配置)在全局asax中执行Se

在我的Web应用程序中,我遇到了一个错误。“会话状态已创建会话ID,但无法保存,因为应用程序已刷新它。”

我在谷歌上搜索了这个问题,发现我必须将会话id存储在Global.asax session_Start事件中

string id = Session.SessionID;
但它已经存在于我的应用程序中。我不确定是什么导致了这个问题。我也没有使用Response.Flush()


任何人都可以解释并解决此问题。

发生这种情况的原因是,有时(取决于web.config配置)在全局asax中执行Session_Start事件时,cookie中没有设置SessionID

您会遇到此错误,因为在页面生命周期的某个时刻,会话中设置了一个变量。请求结束后,ASP.NET也会尝试设置SessionID,但如果请求被刷新(例如,这可以通过Response.Write或AJAX本身刷新响应来完成),则会引发此异常

一个简单的修复方法是(在global.asax文件中):


上述代码在我的应用程序中可用。但还是有错误。看看这里。。。可能是有用的,可能是
void Session_Start(object sender, EventArgs e)
    {
// Code that runs when a new session is started


    //Ensure SessionID in order to prevent the folloing exception
    //when the Application Pool Recycles
    //[HttpException]: Session state has created a session id, but cannot
    //    save it because the response was already flushed by 
    string sessionId = Session.SessionID;
    }