我间歇性地遇到这个故障。
我发现这个链接很好地总结了我在谷歌上找到的内容: http ://www.wacdesigns.com/2009/02/03/session-state-has-created-a-session-id-but-无法保存它,因为响应已被应用程序刷新/
基本上它说您可以尝试设置 Web 配置设置 DisplayWhenNewSession,或者尝试通过获取 Session_OnStart 中的 Session.SessionID 来激活会话状态。
但是有没有人:
a) 对此有解释
甚至更好,b)有一个久经考验的修复
我意识到在执行任何会影响 http 响应标头的操作后,我无法刷新响应。如果我这样做,每次都会导致错误,但这是间歇性的。SessionID 肯定应该由 ASP.NET 在页面响应开始时自动创建,在 ASPX 页面或 Page_Load(我的所有刷新被调用的地方)中的任何内容之前。
更新: 经过反思,我意识到这是在将文件流式传输到浏览器时发生的。大多数浏览器实际上是搜索引擎机器人。我可以通过开始下载然后关闭浏览器来重新创建此错误,因此大概浏览器在取消下载操作之前没有等待下载完成。我也在其他正常页面上看到过这种情况,但 99% 的时间是下载页面。