2013-09-30 146 views
4

我有一個現有的.NET 4溶液在VS2010開發的,它使用的是用於定義當前請求的用戶的IIdentity的實現。我現在想用vs2012來繼續它的發展。ClaimsIdentity的NullReferenceException安裝後.NET 4.5

我在vs2012中打開了解決方案,並將屬性中的目標框架設置爲.Net 4.但是,當我運行該解決方案時,Web服務器反序列化GenericIdentity對象時出現異常。發生異常

at System.Security.Claims.ClaimsIdentity.<get_Claims>d__0.MoveNext() 
at System.Security.Principal.GenericIdentity.OnDeserializedMethod 
                (StreamingContext context) 

異常的原因似乎是屬性聲明未初始化。

我已經知道:

  1. .NET 4.5的更新.NET 4的目標機器上,而不是做一個側由端安裝。

  2. GenericIdentity現在從一類新ClaimsIdentity NET中衍生4.5

  3. 設置目標框架.NET 4意味着雖然代碼仍然與.NET 4.0運行,則4.5實施下的使用涵蓋,即你不能在Visual Studio對象瀏覽器中看到層次結構,但調試器和反射器顯示派生。

  4. 的GenericIdentity.OnDeserializedMethod訪問ClaimsIdentity索賠財產,但不檢查空,導致NullReferenceException異常

一個solution我碰到參與使我的自定義標識對象從System.MarshalByRefObject繼承,但問題是該自定義Identity對象由跨組織中的所有系統使用的「單一登錄」.dll提供。這意味着我無法訪問它來改變它的繼承習慣。

是否有替代解決方案或解決此問題的工作?

+0

這是否再現與.NET 4.5.1發佈候選版本會出現此問題?從這裏下載 - > http://www.microsoft.com/en-us/download/details.aspx?id=39328。如果它重現,.NET框架團隊想要看看。請通過Microsoft網址com的netfx45compat給我們發送代碼示例。謝謝! – Varun

+0

當我得到一些停機時間,我會用4.5.1嘗試,讓你知道結果 –

+0

我可以證實,這個問題不會與4.5.1版 –

回答

0

此問題僅使用內置Visual Studio的服務器時發生,當我們作爲一個團隊,利用本地IIS來運行我們在開發用地,我們只是要忍受它,因爲我剛剛花了太多的時間現在它。

的問題看起來是圍繞對象序列化和反序列化下面的一個AppDomain過渡,但我沒有時間做進一步調查。

更新:不使用.NET 4.5.1

+0

當從4.0 - > 4.5.x序列化時,這是一個已知問題。 –

相關問題