2015-11-13 41 views
20

我正在使用MachineKey API加密/解密ASP.NET應用程序中的一條信息。我使用應用程序池回收時機器密鑰更改

MachineKey.Encode(data, MachineKeyProtection.All)

API的

MachineKey.Decode(data, MachineKeyProtection.All)

方法。啓用「加載用戶配置文件」後,所有功能都可在Windows 8和Windows Server 2012上運行。問題出於某種原因,它無法在Windows Server 2008 R2 with IIS 7.5上重新啓動應用程序池重啓。

起初我有印象,我將需要啓用加載用戶配置設置上應用程序池但這並沒有什麼差別。任何想法,我可能會錯過這裏?

感謝

回答

12

這可能是正在由IIS每個應用程序池回收時產生的新機鍵。嘗試在您的web.config中設置一個靜態機器密鑰,如下所述:IIS 7 Tip #10 You can generate machine keys from the IIS manager。在沒有明確設置靜態機器密鑰的情況下,加密/解密密鑰是一個移動目標。

+1

實際上,使用MachineKey API的想法是取代DPAPI,而不用擔心手動設置機器密鑰。靜態機器鍵可以工作,但它不是一個選項,因爲API應該在沒有它的情況下工作,以確保每個IIS設置具有唯一鍵。 – Leadfoot

4

@pstricker是正確的,如果沒有定義機器密鑰,那麼在應用程序池啓動時會生成一個新密鑰。 MachineKey API基於機器密鑰,因此需要在某處設置。如果您不想在應用程序的Web配置中設置machineKey,您仍然可以在服務器的機器配置中進行設置,如下所示:「C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ config \ machine.config 「

另外,如果您想要每個應用池機器密鑰,則可以執行描述here

相關問題