为什么WCF不能序列化longs或int?

时间:2009-04-09 14:18:39

标签: wcf serialization

我不是100%确定正确的术语是什么,但是......

我有一个名为InParams的类,它有两个字段,一个字符串和一个long以及它们对应的字段属性访问器。它们分别用[DataContract]和[DataMember]修饰。

我有一个名为void Test(InParams inParams)的WCF服务方法

使用svcutil生成的代理很好,我可以设置long字段,但是当执行service方法时,long字段始终为0,即使我明确设置了long字段。我看着肥皂信封,看不到我长场的标签。

当我将长字段更改为字符串字段时,它会被序列化。对于整数也是如此。

我错过了某个属性还是什么?

3 个答案:

答案 0 :(得分:2)

你能发一个样品吗?仔细检查:

  • 确保课程有[DataContract()]装饰
  • 确保 PUBLIC 属性具有[DataMember()]装饰

通过删除/重新生成代理类来确保它是最新的。看看是否有所作为?

答案 1 :(得分:0)

除了Tanner所提到的,DataContractSerializer明确支持longs和int。

.NET Framework基元类型。 .NET Framework中内置的以下类型都可以序列化并被认为是基本类型:Byte,SByte,Int16,Int32,Int64,UInt16,UInt32,UInt64,Single,Double,Boolean,Char,Decimal,Object和字符串。Link

答案 2 :(得分:0)

如果除了YourPropertyName之外,客户端上还有一个布尔值YourPropertyNameSpacified属性,则必须在客户端上将其设置为true。我认为这适用于所有价值类型的领域。另请参阅WCF service proxy not setting "FieldSpecified" property