WCF CultureInfo类型DataMember序列化CommunicationException

时间:2014-05-13 14:22:26

标签: c# wcf serialization

当我使用CultureInfo Typed DataMember调用我的WCF服务方法时,它会抛出CommunicationException。

我该如何解决这个问题?

  

InnerException   消息是' Type' System.Globalization.GregorianCalendar'有数据   合同名称   ' GregorianCalendar的:http://schemas.datacontract.org/2004/07/System.Globalization'   不是预期的。将任何静态未知的类型添加到已知列表中   类型

[DataContract]
class MyClass
{
    [DataMember]
    public CultureInfo UserCulture { get; set; } 
}

1 个答案:

答案 0 :(得分:5)

将此配置添加到主机和客户端配置中。

<system.runtime.serialization>
<dataContractSerializer>
  <declaredTypes>
    <add type="System.Globalization.CultureInfo, mscorlib,Version=2.0.0.0, Culture = neutral, PublicKeyToken=b77a5c561934e089">
      <knownType type="System.Globalization.GregorianCalendar,mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
    </add>
  </declaredTypes>
</dataContractSerializer>

  

CultureInfo包含基类Calendar和的日历字段   它不知道专门的GregorianCalendar类型,但我们   我希望通过添加knowntype属性来处理。

http://www.vistax64.com/indigo/65776-cultureinfo-serialization-issue-gregoriancalendar-wcf.html