DTO bool字段false(与true相同)触发器WriteStartElement只能在文档的开头调用,或者在调用WriteEndElement之后立即调用?

时间:2014-05-01 00:13:48

标签: c# xml wcf rest json.net

非常离奇。从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);

0 个答案:

没有答案