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