1. 程式人生 > >服務器配置,負載均衡時需配置MachineKey

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

href 遇到 eve orm 連接 配置 ashx auto forms

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

https://blog.csdn.net/liuqiao0327/article/details/54018922

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" />

彩蛋

C#判斷當前計算機是否已經連接網絡

//判斷網絡連接 
        [DllImport("wininet")]
        private extern static bool InternetGetConnectedState(out int connectionDescription, int reservedValue);
     
        private void btnOK_Click(object sender, EventArgs e)
        {
            //判斷是否聯網 
            int i = 0;
            if (InternetGetConnectedState(out i, 0))
            {
                //聯網
                MessageBox.Show("Thylx提醒您:你的計算機已連接到網絡上!");
            }
            else
            {
                //斷網
                MessageBox.Show("Thylx提醒您:本地連接已斷開!");
            }

        }

web項目如何知道給別人發送的郵箱,判斷用戶是否讀了郵件

當我們做web項目時,會時常遇到給用戶發郵件的問題,那怎麽判斷用戶讀了郵件呢,可以使用一個方法,就是在發送郵件的html中加個技術分享圖片 使用圖片加載的方式,回傳到本系統中處理

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