2015年9月10日 星期四

[Trouble Shooting] 資料保護作業失敗。這可能是未針對目前執行緒的使用者內容載入使用者設定檔所造成

 IIS   ASP.NET   Trouble Shooting 

背景


IISWebsite執行ASP.NET Identity 非同步的程式碼時,出現以下錯誤訊息:

System.Security.Cryptography.CryptographicException: 資料保護作業失敗。這可能是未針對目前執行緒的使用者內容載入使用者設定檔所造成,當執行緒正在模擬時就可能有這種情況。


原因在於使用 Microsoft.Owin.Security.DataProtection.IDataProtectionProvider  建立TokenProvider時不是Singleton的物件, 因此解決方式有二。


解決方式


有兩個解決方式,第二個直接調整程式碼是比較建議的方式。


1.  IISApplication Pool進階設定開啟載入使用者設定檔




2.  Microsoft.Owin.Security.DataProtection.IDataProtectionProvider 設為Static


private static IDataProtectionProvider provider =
new Microsoft.Owin.Security.DataProtection.DpapiDataProtectionProvider("ASP.NET Identity");




Reference



沒有留言:

張貼留言