我正在使用NetDataContractSerialiser與WCF。這對我們所有類型的序列化都很有效。不過,我調用一個服務產生以下異常wcf netdatacontractserializer異常序列化idictionary與枚舉作爲鍵
格式化拋出一個異常,而試圖反序列化消息:
嘗試反序列化參數http://tempuri.org/:xmlServiceObjIN時出錯。 InnerException消息是'The deserializer can not load type to deserialize because type'System.Collections.Generic.EnumEqualityComparer`1 [[GrantEd.Common.DomainModel.Code.Enums.enumFundingParameterContextKey,GrantEd.Common.DomainModel.Code,Version = 14.0 .71.0,Culture = neutral,PublicKeyToken = null]]'在程序集'mscorlib,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'中找不到。 檢查被序列化的類型與被反序列化的類型具有相同的契約,並使用相同的程序集。'。有關更多詳細信息,請參閱InnerException。
類正在序列具有被定義爲
public IDictionary<enumFundingParameterContextKey, string> Context { get; set; }
枚舉的聲明的屬性是
[Serializable]
public enum enumFundingParameterContextKey
{
[EnumMemberAttribute()]
ClientId = 0,
[EnumMemberAttribute()]
EntitlementDefinitionId = 1
}
其在另一個assmebly定義。
當我用int替換枚舉類deserialises沒有問題。任何想法爲什麼使用枚舉會導致異常?
之所以使用NetDataContractSerializer是爲類型信息可用,並且避免使用KnownType
可悲的是沒有運氣。在客戶端也驗證正確的程序集。 – Peter 2011-06-03 01:39:22