生产环境:

操作系统:win2003

web: IIS 6.0

程序语言: asp.net

运行问题:

   无法向会话状态服务器发出会话状态请求。请确保已启动ASP.NETState service,并且客户端和服务器端口是相同的。如果服务器位于远程计算机上,请检查HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/aspnet_state/Parameters/AllowRemoteConnection的值,确保服务器接受远程请求。 

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 
    异常详细信息: System.Web.HttpException: 无法向会话状态服务器发出会话状态请求。请确保已启动 ASP.NET State service,并且客户端和服务器端口是相同的。如果服务器位于远程计算机上,请检查HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/aspnet_state/Parameters/AllowRemoteConnection的值,确保服务器接受远程请求。 
   源错误: 
   执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。 
堆栈跟踪: 
[HttpException (0x8007274d): 无法向会话状态服务器发出会话状态请求。请确保已启动ASP.NETState service,并且客户端和服务器端口是相同的。如果服务器位于远程计算机上,请检查HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/aspnet_state/Parameters/AllowRemoteConnection的值,确保服务器接受远程请求。] 
System.Web.SessionState.OutOfProcStateClientManager.MakeRequest(StateProtocolVerbverb,String id, StateProtocolExclusive exclusiveAccess, Int32 timeout,Int32lockCookie, Byte[] buf, Int32 cb, Int32 networkTimeout,SessionNDMakeRequestResults&results) 
System.Web.SessionState.OutOfProcStateClientManager.DoGet(Stringid,StateProtocolExclusive exclusiveAccess) 
System.Web.SessionState.OutOfProcStateClientManager.GetExclusive(Stringid) 
System.Web.SessionState.StateClientManager.BeginGetExclusiveSync(Stringid,AsyncCallback cb, Object state) 
System.Web.SessionState.OutOfProcStateClientManager.System.Web.SessionState.IStateClientManager.BeginGetExclusive(Stringid,AsyncCallback cb, Object state) 
System.Web.SessionState.SessionStateModule.GetSessionStateItem() 
System.Web.SessionState.SessionStateModule.BeginAcquireState(Objectsource,EventArgs e, AsyncCallback cb, Object extraData) 
System.Web.AsyncEventExecutionStep.System.Web.HttpApplication+IExecutionStep.Execute() 
System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean&completedSynchronously)  

原因分析:
web.config中配置SessionState的mode为StateServer,但服务器没有开启改个服务。

解决方法:
1.Web.Config里面 把sessionState 的mode改为"InProc" ;
           mode="InProc"
           stateConnectionString="tcpip=127.0.0.1:42424"
           sqlConnectionString="datasource=127.0.0.1;user id=sa;password="
           cookieless="false"
           timeout="20"
    /> 

2.在服务中启用"ASP.NET Stateservice" 

   系统默认采用asp.net状态服务保存状态,这样稳定。改为:InProc,则采用iis进程保存用户状态,由于InProc有600M的内存限制,所以在某些虚拟主机上,资源不足,会导致用户状态丢失,因此我们默认采用asp.net状态服务“ASP.NET State service”。