服務器配置,負載均衡時需配置MachineKey

Asp.Net應用程序中爲什麼要MachineKey?如何生成MachineKey?

如果你的Asp.Net程序執行時碰到這種錯誤:“驗證視圖狀態 MAC 失敗。如果此應用程序由網絡場或羣集承載,請確保 配置指定了相同的 validationKey 和驗證算法。不能在羣集中使用 AutoGenerate。”那麼說明你沒有讓你的應用程序使用統一的machineKey,那麼machineKey的作用是什麼呢?按照MSDN的標準說法:“對密鑰進行配置,以便將其用於對 Forms 身份驗證 Cookie 數據和視圖狀態數據進行加密和解密,並將其用於對進程外會話狀態標識進行驗證。”也就是說Asp.Net的很多加密,都是依賴於machineKey裏面的值,例如Forms 身份驗證 Cookie、ViewState的加密。默認情況下,Asp.Net的配置是自己動態生成,如果單臺服務器當然沒問題,但是如果多臺服務器負載均衡,machineKey還採用動態生成的方式,每臺服務器上的machinekey值不一致,就導致加密出來的結果也不一致,不能共享驗證和ViewState,所以對於多臺服務器負載均衡的情況,一定要在每臺站點配置相同的machineKey。
webconfig中需要配置如下:

<machineKey validationKey="9912131415161718190a0b0c0d0e0f1011987654" decryptionKey="99225577bbaa9988" validation="SHA1" />
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章