非常离奇。从WCF REST客户端(而不是服务):
我得到" WriteStartElement只能在文档的开头调用,或者在调用WriteEndElement"之后立即调用。当DTO参数字段值设置为" false"时,在WCF客户端中; vs." true"。就是这样。只是对象中的bool字段。为什么它应该有所作为?
有没有人见过这个?许多具有各种对象的方法都可以正常工作。使用相同的DTO,这种方法效果很好。触发这一切的所有内容都是属性上的错误bool值。 介意
这发生在' SerializeRequest'和' BeforeSendRequest' WCF可扩展性点(方法)。 Message对象创建成功,一切似乎都应该'工作。折流板。
这是简单的属性(其中有很多,工作正常)。这里没什么特别的!
[DataMember(Name="addToInventory")]
public bool AddToInventory
{
get
{
return this.m_addToInventory;
}
set
{
this.m_addToInventory = value;
}
}
该对象由Json.Net序列化(进入Json),转换为Byte数组,然后用于构造WCF消息。那部分工作正常。一旦它进入频道,就会发生一些奇怪的事情。
该步骤的简短片段(在任何地方都能正常工作,除了这一个对象,其中这一个字段设置为假值)。
byte[] jsonObjectsByteArray = { };
foreach (var parameter in parameters)
{
string jsonSerializedParam = JsonConvert.SerializeObject(parameter);
if (string.IsNullOrEmpty(jsonSerializedParam))
{
throw new ArgumentNullException();
}
byte[] paramByteArray = Encoding.UTF8.GetBytes(jsonSerializedParam);
if (paramByteArray.Length != 0)
{
jsonObjectsByteArray = jsonObjectsByteArray.Concat(paramByteArray).ToArray();
}
}
// Read the Json Byte array into a JsonReader
// >This is the message body<
var jsonToWcfInfoSetReader =
JsonReaderWriterFactory.CreateJsonReader(
jsonObjectsByteArray,
0,
jsonObjectsByteArray.Length,
XmlDictionaryReaderQuotas.Max);
// Position on an element
jsonToWcfInfoSetReader.MoveToStartElement();
// Create the WCF message
apiCallMsg = Message.CreateMessage(
messageVersion,
m_operation.Messages[0].Action,
jsonToWcfInfoSetReader);