情况:
我们有 2 个运行负载平衡(软件,标准安装)框架 4.5 的 Web 服务器 IIS7.5
我们在两台服务器上都运行了 Kentico 7.0 安装。
问题:
站点加载正常,但是当我更改为 CMSDesk 并尝试登录(使用 IE8)时,我收到错误消息(非常快,甚至一秒钟):
Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.
事件簿
Event code: 4009
Event message: Viewstate verification failed. Reason: The viewstate supplied failed integrity check.
使用 Chrome 27+ 大约需要 3-4 秒,但 CMSDesk 会出现(只是有时会出现错误,我不能说什么时候?!)。这就是为什么我可以排除 IE8 问题
现在它变得非常诡异,即使我从负载平衡器中取出服务器!
我尝试过的:( 所有这些实验我都尝试过各种组合)
0) 疯狂搜索,回收应用程序池并清除缓存。基本
1) 在
machine.config's (rebooted the servers afterwards)
%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\config\machine.config
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\config\machine.config
%SystemRoot%\Microsoft.NET\Framework64\v2.0.50727\config\machine.config
%SystemRoot%\Microsoft.NET\Framework64\v4.0.30319\config\machine.config
Example Code (in all Files the SAME KEYS)
<system.web>
<machineKey validationKey="EEF33150A048D162D22CB36E1CB9956B148C7A4E6999D0F05B53D416D7A16F83823DD626F501DD3549D3E5DCB473634739D0AD9A07F71560946498C943A7586D"
decryptionKey="0E95F75864047EB6322EA7D5246F2C1175D77A1B016F293C3BAAD000299A3DC8"
validation="SHA1"
decryption="AES" />
</system.web>
结果:同样的错误
2)我什至在webconfig中设置它(只是为了确定)。
结果:同样的错误
3)我将 Web.config 中 pages-element 上的属性 enableViewStateMac 设置为 false (只是为了看看它是否有效,我不喜欢安全漏洞)
结果:没有错误,但我留在了登录页面。在 kentico-event-log 上有一条成功的身份验证消息。唔?!所以,为了安全起见,我把它变回了真实;-) 其他安全漏洞解决方案,如 auth never 等等,我什至没有尝试过,因为它应该是一个保存页面。
4)我检查了页面是否真的完全加载(因为在某些论坛中指出,如果页面没有完全加载,它可能会破坏视图状态并且验证不起作用)
结果:同样的错误
5)我尝试了“不安全”的 Kentico 解决方法,在 web.config / settings 部分设置属性
<add key="CMSUseViewStateUserKey" value="false"/>
结果:与数字 3 相同
6)我什至查看了“IE8 中的前瞻下载器错误”,但这应该用 KB980182 修复并且我已经安装(是的,我现在正在寻找稻草)
刚刚看过
7) ViewState 似乎不太长,因为它只是一个登录表单
刚刚看过
8) 不使用集群IP-Adress直接调用一台Server
结果:有效。(耶)
-> 所有这些信息让我有些困惑,我如何让集群工作?
*) Chrome 与集群 / 与集群中的服务器 / 直接在服务器上运行 90 - 99%
*) IE 8 不适用于集群
*) IE 8 不适用于只有一台服务器的集群
*) IE 8 直接在服务器上运行
到目前为止的结论:
*) 它可能是一个 IE8 错误
*) 它可能与负载平衡、集群或域名有关(我认为)。
*)由于目前我无法再复制,我必须丢弃 Chrome/错误
*)由于第 3 点,它必须具有 MAC 功能(http://support.microsoft.com/)
我会感谢任何输入/指针/...
Ps:请不要对我苛刻这是我的第一个问题。