【发布时间】:2011-04-15 15:11:37
【问题描述】:
我正在将 2 个 .NET 网站从一个 Windows 2003 (IIS6) 服务器迁移到另一个。其中一个站点是 .NET 2.0,另一个是 .NET 3.5。我在全局 web.config 文件(在 C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\ 目录中)中使用 ASP.NET 会话状态的 StateServer 模式和以下设置。会话状态在旧服务器上运行良好。
<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424"/>
但是,在从here 安装 .NET 2.0 和 .NET 3.5 SP1 框架后,我在服务器重新启动、会话超时或应用程序池刷新后第一次(每次)都收到以下错误消息。
无法使用会话状态服务器,因为此版本的 ASP.NET 需要会话状态服务器版本 2.0 或更高版本。[在 System.Web.SessionState.OutOfProcSessionStateStore.MakeRequest(StateProtocolVerb 动词,字符串 id, 状态协议排他性 独占访问,Int32 额外标志, Int32 超时,Int32 lockCookie, 字节[] buf, Int32 cb, Int32 网络超时, SessionNDMakeRequestResults& 结果) 在 System.Web.SessionState.OutOfProcSessionStateStore.SetAndReleaseItemExclusive(HttpContext 上下文,字符串 ID, SessionStateStoreData 项,对象 lockId, Boolean newItem) 在 System.Web.SessionState.SessionStateModule.OnReleaseState(对象 源,EventArgs eventArgs)在 System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean & completedSynchronously) ]
我发现了其他 2 个具有类似症状的帖子,但是它们都没有提供有效的解决方案。
- Unable to use session state server....requires session state server version 2.0 or above.
- Unable to use Session State Server
到目前为止,我已经尝试过:
- 使用 aspnet_regiis -ua 后跟 aspnet_regiis -i -enable
- 卸载并重新安装 .NET 3.5 SP1 和 .NET 2.0
- 将 httpRuntime enableVersionHeader 属性显式设置为 true
注意,我还在每个应用程序的 web.config 文件中设置了 MachineKey 属性,如this MSDN article 中所述。这是我在旧服务器上工作的东西,它与以前完全相同。
我注意到,当我只安装 .NET 2.0 时,问题完全消失了。它仅在我安装 .NET 3.5 SP1 后出现。不幸的是,其中一个应用程序的某些功能依赖于 .NET 3.5,因此不能将其卸载。
有什么想法可以诊断和解决这个问题吗?
【问题讨论】:
标签: asp.net session-state session-state-server