我实际上已经找到了解决方案,但我试图了解它失败的原因,以及为什么我的解决方案解决了问题。
我们有一个在web服务器和sql server之间使用表单身份验证的应用程序,web服务器运行server 2008,sql server运行2008 r2,sql server 2008。
8 月,sql server 打上了 .net 3.5.1 补丁,web 服务器未受影响,表单身份验证继续工作。
1 周前,由于硬件故障,我们将 Web 服务器虚拟化到我们的 vSphere 服务器上。之后表单身份验证失败,事件代码 4005,详细代码 50201,提供的票证无效(在 sql server 上)。事实上,sql server 开始生成 Schannel 错误,并且每天开始蓝屏 3-4 次。
在这一点上,我第一次(曾经)接触过 sql server,错误是非特定的,我能找到的任何对它们的引用都与区域警报(我们不运行)或内存错误有关。所以我应用了服务包 1,它停止了蓝屏,但没有修复表单身份验证。
在这一点上,我们有一个变通办法,所以我们在完成另一个项目时把它搁置一旁,昨晚我又重新开始了。
首先是在sql server上的webconfig文件中调整了一些代码,没有,然后是重新生成并更改了机器密钥,仍然没有变化。更新 DNS 服务器,没有变化。
最后我完成并安装了所有 Windows 更新,两次重新启动,(通过 RDP 安装了一个失败的网卡驱动程序,并且没有我的服务器机房密钥,这很有趣)。
之后,表单身份验证再次运行。并且 sql server 停止生成尽可能多的错误,从那以后我得到了两个 schannel 错误。
简而言之,当Web服务器被克隆到虚拟机上时,表单身份验证开始失败,导致sql服务器蓝屏?并形成身份验证失败。并且只能通过对 sql server 应用补丁来修复?(我希望我一次为一个服务器打补丁,这样我就可以确定哪个服务器上的哪个补丁修复了它)。
我的问题是为什么它失败了,为什么打补丁修复了它?我讨厌在没有完全理解原因和方法的情况下修复某些东西。
这似乎是一个已知问题,我只是想更好地了解根本原因。
https://stackoverflow.com/questions/10094772/microsoft-still-seems-to-have-a-bug-with-forms-authentication-on-webfarm
是相似的,但我没有运行 webfarm