2010-02-19 111 views
3

我正在將我們的託管環境遷移到全新的數據中心,並帶有新盒子和硬件和軟件......整個交易。將MachineKey從舊服務器上的iis6移植到新服務器上的iis7

我們的網站cookie使用machineKey進行加密,所以當我向我的域發出請求並將其指向新的Web服務器(通過覆蓋本地主機文件)時,出現錯誤,因爲Cookie無法解密,因爲機器密鑰不同。我想避免頻繁用戶第一次到達新服務器時可能遇到的任何問題。

據我所知,在這一點上,我認爲我需要在我們的新服務器上從我們當前的服務器設置相同的MachineKey。通過這種方式,當過去有cookie的訪問者到達我們新服務器提供的網站時,cookie將被加密的MachineKey正確解密,然後正確登錄。

我的問題是我在哪裏可以找到我的MachineKey值(在IIS 6 win2k3服務器中),以便我可以使用該值在我的新服務器上靜態設置它?我拉起了我的machine.config文件,但它沒有指定鍵值,它只指定了可以定義鍵值的configSection。它不在我的web.config中的應用程序或其他地方。

我在某些MachineKey和Web Garden上遇到了一些this great article問題(這可以解釋我在machineKey方面遇到的一些其他錯誤)。

更新 我回到了這個問題,我仍然面臨類似的問題。我有在IIS6服務器上自動生成的MachineKey,但我需要獲取確切的密鑰,以便我可以明確地設置它,而不是自動生成它。

任何幫助表示讚賞...

回答

1

你見過this

看起來你可以通過查看

  • System.Web.Configuration.MachineKeySecion.DecryptionKeyInternal
  • System.Web.Configuration.MachineKeySecion.ValidationKeyInternal

這些檢索它的內部然而,所以你必須使用反射。

+0

這是偉大的!不過那篇文章是用C#3.5編寫的,我被困在2.0中。我一直在嘗試使用反射來獲得這些內部屬性,並且還沒有運氣。 – MaseBase 2010-03-20 00:24:37

+0

這對我來說是正確的答案,但我沒有選中標記來標記它!我花了一段時間纔得到反射代碼,因爲鏈接在.NET 3.5中,而且我在.NET 2.0中 - 不要使用反射,但它確實解決了我的問題! – MaseBase 2010-04-09 00:02:46

0

有兩個machineKeys,你可以使用。我不確定你使用哪一個進行加密。但這裏有兩個MachineKeys的反正...

  1. C:\ Documents和Settings \所有用戶\應用數據\微軟\加密\ RSA \ MachineKeys的
  2. http://support.microsoft.com/kb/312906。您不應該將其保留爲AutoGenerate,否則機器鍵將在所有機器上自動生成,因此它會有所不同。

HTH, 拉胡爾

+1

是的,我不想保留它作爲自動生成,但我不想從另一個新的密鑰開始。我所要做的就是獲取當前自動生成的密鑰,以便我可以進行設置並確保可以訪問我的Cookie和加密數據。 – MaseBase 2010-03-20 00:25:44

+0

我不認爲這是值得痛苦的MaseBase。無論如何你必須在所有機器上設置它才能使其工作。 AFAIK,當您重置IIS /機器時,當前自動生成密鑰更改。 – 2010-03-22 03:14:48