我正在将 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"/>
但是,在从此处安装 .NET 2.0 和 .NET 3.5 SP1 框架后,我在服务器重新启动、会话超时或应用程序池刷新后第一次(每次)都收到以下错误消息。
无法使用会话状态服务器,因为此版本的 ASP.NET 需要 2.0 或更高版本的会话状态服务器。[在 System.Web.SessionState.OutOfProcSessionStateStore.MakeRequest(StateProtocolVerb 动词,字符串 id,StateProtocolExclusive ExclusiveAccess,Int32 extraFlags,Int32 超时,Int32 lockCookie, Byte[] buf, Int32 cb, Int32 networkTimeout, SessionNDMakeRequestResults& results) 在 System.Web.SessionState.OutOfProcSessionStateStore.SetAndReleaseItemExclusive(HttpContext context, String id, SessionStateStoreData item, Object lockId, Boolean newItem) at System.Web.SessionState.SessionStateModule System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 处 System.Web.HttpApplication 处的 .OnReleaseState(Object source, EventArgs eventArgs)。ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)]
我发现了其他 2 个具有类似症状的帖子,但是它们都没有提供有效的解决方案。
到目前为止,我已经尝试过:
- 使用 aspnet_regiis -ua 后跟 aspnet_regiis -i -enable
- 卸载并重新安装 .NET 3.5 SP1 和 .NET 2.0
- 将 httpRuntime enableVersionHeader 属性显式设置为 true
注意我还在每个应用程序的 web.config 文件中设置了 MachineKey 属性,如本 MSDN 文章中所述。这是我在旧服务器上工作的东西,它与以前完全相同。
我注意到,当我只安装 .NET 2.0 时,问题完全消失了。它仅在我安装 .NET 3.5 SP1 后出现。不幸的是,其中一个应用程序的某些功能依赖于 .NET 3.5,因此不能将其卸载。
有什么想法可以诊断和解决此问题吗?