我们在 W2003 服务器上运行 IIS 6。根网站正在运行 v1.1 网站。在此网站下,我们有一个虚拟网站正在运行 v2.0 网站(带有单独的应用程序池)。根网站的 web.config 使用 SQL 作为其状态服务器,并安装了 1.1 SQL 状态服务器数据库。2.0 虚拟 web.config 不需要状态,并且其 web.config 没有对状态服务器的引用。当我们尝试调用虚拟网站时,我们收到此错误消息。“无法使用 SQL Server,因为 SQL Server 上未安装 ASP.NET 版本 2.0 会话状态。请安装 ASP.NET 会话状态 SQL Server 版本 2.0 或更高版本。
此问题目前仅发生在一台 Web 服务器上。其余的 Web 服务器均能够运行 2.0 虚拟应用程序。我还注意到,如果我们使用 IP 地址调用 2.0 虚拟,则不会生成错误,但是如果我们使用主机标头名称调用它,则会生成错误(此行为仅在出现错误的 1 台 Web 服务器上发生,所有其他 Web 服务器都可以使用 ip 或主机标头调用而不会出现错误)。另外需要注意的是,根和虚拟正在使用 SSL 运行。
我的理论是虚拟 2.0 应用程序从根目录继承了 1.1 web.config 状态服务器条目,当它查看状态服务器时,它会将其视为 1.1 版本并报告需要 2.0 状态服务器的错误。然而,我无法理解为什么其他服务器在这个问题上表现不佳。所有服务器都使用相同的操作系统服务包以及相同版本的 .net 框架。
有什么想法吗?谢谢
答案1
检查[Windows]\Microsoft.NET\Framework\v2.0.50727中的machine.config和web.config
答案2
虽然我无法确定 2.0 项目为何尝试使用 SQL State,但我能够通过在 2.0 项目的 web.config 中的 system.web 部分下添加 sessionState mode="Off" /> 来更正此行为。仍然不明白为什么其他服务器不需要该条目,但对于此问题,这是一个不可接受的解决方案。