我们的服务器偶尔会出现一个奇怪的问题。它通常发生在我们的一个或多个 Web 应用程序升级时。调试问题让我走到了这一步……
在处理请求期间:
- 在 ASP.NET 应用程序中,我们将一个对象放入会话中
- 在稍后运行的代码(相同的请求)中,我们查找相同的会话值。它是空的!
所以看起来会话服务不起作用,对吧?该代码每天运行数百次,在开发环境或生产环境中从未失败,仅与升级 Web 服务器上的 Web 应用程序有关。
奇怪的是:我们也没有真正喜欢解决问题的适当方法。IIS 重置、ASP.NET 状态服务器停止/启动、web.config 编辑,甚至服务器重新启动都使用了所有 bin - 通常需要组合来修复它 + 加上大量的咒骂和拉扯。而且在大多数情况下,它不会立即修复,但可能在第三次 IIS 重置或其他任何情况后两三分钟。(所以它可能毕竟不是修复它的原因。)
我要疯了。任何想法可能是什么问题?是微软的bug吗?
更多信息:
- 我们在 .NET 2.0 下运行
- 我们正在使用 ASP.NET 状态服务
- 访问会话变量并返回 null 的代码位于 ASP.NET 应用程序引用的程序集中。它使用 HttpContect.Current 来获取会话