设置:2 个 Web 服务器和一个单独的状态服务器
我有两个负载平衡配置的生产 Web 服务器。他们托管的 ASP.NET Web 应用程序使用其 web.configs 中的这一行共享状态(如网络农场):
<sessionState mode="StateServer" stateConnectionString="tcpip=9.9.9.9:42424" cookieless="false" timeout="60"/>
9.9.9.9 是运行 asp.net 会话状态服务的机器的 IP(好吧,它真的不是 9.9.9.9,为了保护无辜而更改)。它是第三台机器(实际上是数据库服务器。
它工作得很好,直到...
错误:网站宕机!
突然网站宕机了,只显示一个通用的 asp.net 错误页面(“关闭自定义错误以查看此错误”或其他任何内容)。
该应用程序的日志记录了实际的错误消息:
发生未处理的异常 无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State 服务已启动并且客户端和服务器端口相同。如果服务器在远程机器上,请通过检查 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection 的值来确保它接受远程请求。如果服务器在本地机器上,并且如果前面提到的注册表值不存在或设置为 0,则状态服务器连接字符串必须使用“localhost”或“127.0.0.1”作为服务器名称。
因此,Web 应用程序似乎无法联系状态服务器(9.9.9.9)。
我“尝试转动如果 auf 然后 onnegen” - 重新启动状态服务器解决了问题。
为什么?
我真的很想知道发生了什么以及为什么这样我可以防止它再次发生。
到目前为止,我只有两个理论:
大约在那个时候,在状态服务器上应用了对 .net 框架 4 的 Windows 更新。那么也许更新对 asp.net 状态服务有影响?Windows 事件查看器显示 .net 4 已经记录了一个警告:
对 IIS 元数据库的更新被中止,因为 IIS 未安装或在此计算机上被禁用。要将 ASP.NET 配置为在 IIS 中运行,请安装或启用 IIS 并使用 aspnet_regiis.exe /i 重新注册 ASP.NET。
prod网站和状态服务器之间的某种临时网络问题?不过,它们确实在同一个物理机架中彼此相邻。
???任何其他想法,有人吗?
任何人以前见过这个,或者能够纠正我的任何事情?