我有一个ASP.NET MVC应用程序,该应用程序配置为使用Web Garden运行。 使用以下命令将会话状态模式在web.config中设置为StateServer:
<system.web>
<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" timeout="360" />
</system.web>
ASP.NET状态服务在同一台计算机(而不是远程计算机)上运行,因此上述ip在端口42424上设置为127.0.0.1。它被配置为“自动”,并且始终在运行。
并且应用程序池的最大工作进程数设置为4。
我经常在事件日志中收到有关状态服务器的许多警告消息。低于错误( 事件ID 1310):
Event code: 3009
Event message: No se pudo realizar la solicitud al servidor de estado de la sesión. Detalles: última fase='Leyendo respuesta del servidor de estado', código de error=0x8007000E, tamaño de datos salientes=0
Event time: 05/11/2020 16:22:45
Event time (UTC): 05/11/2020 15:22:45
Event ID: 2e332c8f5171461e9a635a55ead92129
Event sequence: 24813
Event occurrence: 40
Event detail code: 50016
Application information:
Application domain: /LM/W3SVC/2/ROOT-2-132490528848804756
Trust level: Full
Application Virtual Path: /
Application Path: C:\inetpub\wwwroot\MyMvcApp\
Machine name: MyServer
Process information:
Process ID: 4816
Process name: w3wp.exe
Account name: MyDomain\MyAppPoolIdentityAccount
Exception information:
Exception type: HttpException
Exception message: No se puede realizar una solicitud de estado de sesión al servidor de estado de sesión. Compruebe que el servicio de estado ASP.NET se ha iniciado y que los puertos de cliente y servidor son los mismos. Si el servidor se encuentra en un equipo remoto, compruebe el valor de HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection para asegurarse de que acepta más solicitudes. Si el servidor se encuentra en el equipo local y si el mencionado valor del registro no existe o está establecido en 0, la cadena de conexión del servidor de estado debe utilizar 'localhost' o '127.0.0.1' como nombre de servidor.
TRANSLATED TO ENGLISH:
Unable to make the session state request to the session state server.
Please ensure that the ASP.NET State service is started and that the client and server ports are the same. If the server is on a remote machine, please ensure that it accepts remote requests by checking the value of HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection.
If the server is on the local machine, and if the before mentioned registry value does not exist or is set to 0, then the state server connection string must use either 'localhost' or '127.0.0.1' as the server name.
Request information:
Request URL: http://my.mvcapp.com/Wizard/MakeOrder
Request path: /Wizard/MakeOrder
User host address: 172.28.X.XX
User: MyDomain\OneUser
Is authenticated: True
Authentication Type: Negotiate
Thread account name: MyDomain\MyAppPoolIdentityAccount
Thread information:
Thread ID: 67
Thread account name: MyDomain\MyAppPoolIdentityAccount
Is impersonating: False
Stack trace:
Custom event details:
我确保ASP.NET状态服务已启动并正在运行,并且确保客户端和服务器端口是正确的端口,分别是127.0.0.1和42424。另外,我还有注册表项HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ aspnet_state \ Parameters \ AllowRemoteConnection。由于ASP.NET状态服务在同一台计算机上运行,因此该密钥存在且将其设置为0(无需将其设置为1)。
所以,我不明白为什么要说检查状态服务器.....有什么想法吗?我花了很多天在谷歌上搜索,但是我无法解决这个问题。