状況:
負荷分散された (ソフトウェア、標準インストール) フレームワーク 4.5 を実行する 2 つの Web サーバー IIS7.5 がインストールされています。
両方のサーバーで実行されている Kentico 7.0 インストールがあります。
問題:
サイトの読み込みは正常ですが、CMSDesk に変更して (IE8 で) ログインしようとすると、エラー メッセージが表示されます (非常に速くなく、1 秒もかかりません):
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) machinekey 要素を
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 には、成功した認証メッセージがありました。うーん?!だから、私はそれをtrueに戻し、安全にしました;-) auth neverなどの他のセキュリティホールソリューションは、保存ページである必要があるため、試しませんでした.
4) ページが本当に完全に読み込まれたかどうかを確認しました (一部のフォーラムでは、ページが完全に読み込まれていない場合、viewstate が壊れて検証が機能しないと述べられていたため)
結果: 同じエラー
5) 「安全でない」Kentico の回避策を試し、web.config / settings セクションで属性を設定しました
<add key="CMSUseViewStateUserKey" value="false"/>
結果:3番と同じ
6) 「IE8 の先読みダウンローダーのバグ」も調べましたが、これは KB980182 で修正する必要があり、インストールしました (はい、今ストローをつかんでいます)
ちょうど見た
7) ViewState はログイン フォームに過ぎないため、あまり長くないように見えます。
ちょうど見た
8) クラスタ IP アドレスなしで 1 つのサーバーを直接呼び出す
結果: 動作します。(はい)
-> この情報はすべてややこしいですが、クラスターを機能させるにはどうすればよいですか?
*) Chrome は、クラスタ / クラスタ内のサーバー / サーバー上で 90 ~ 99% 直接動作します
*) IE 8 はクラスターでは動作しません
*) IE 8 は、サーバーが 1 つしかないクラスターでは機能しません。
*) IE 8 はサーバー上で直接動作します
これまでの結論:
*) IE8 のバグである可能性があります
*) ロードバランシング、クラスター、またはドメイン名 (と思います) に関するものである可能性があります。
*) 現在、これ以上再現できないため、Chrome/エラーを破棄する必要があります
*) ポイント 3 により、MAC 機能を備えたものでなければなりません ( http://support.microsoft.com/ )
入力/ポインター/...に感謝します
Ps: 難しく考えないでください。これが最初の質問です。