C# DTO bool字段false(vs.true)触发器WriteStarteElement只能在文档开始时调用,还是在调用WriteEndElement后立即调用?
很奇怪。来自WCF REST客户端而非服务: 当DTO参数字段值设置为false vs.true时,只能在文档开始时调用WriteStarteElement,或在WCF客户端中调用WriteEndElement后立即调用WriteEndElement。就这样。只是对象中的一个布尔字段。究竟为什么这会产生影响 以前有人见过这个吗?使用各种对象的许多方法都可以很好地工作。这种方法工作得很好,DTO相同。触发此操作的只是属性上的假布尔值。神魂颠倒 这发生在“SerializeRequest”和“BeforeSendRequest”WCF扩展点方法之后。消息对象已成功创建,并且一切似乎都“应该”工作。莫名其妙 这是一个简单的属性,有很多,工作良好。这里没什么特别的C# DTO bool字段false(vs.true)触发器WriteStarteElement只能在文档开始时调用,还是在调用WriteEndElement后立即调用?,c#,xml,wcf,rest,json.net,C#,Xml,Wcf,Rest,Json.net,很奇怪。来自WCF REST客户端而非服务: 当DTO参数字段值设置为false vs.true时,只能在文档开始时调用WriteStarteElement,或在WCF客户端中调用WriteEndElement后立即调用WriteEndElement。就这样。只是对象中的一个布尔字段。究竟为什么这会产生影响 以前有人见过这个吗?使用各种对象的许多方法都可以很好地工作。这种方法工作得很好,DTO相同。触发此操作的只是属性上的假布尔值。神魂颠倒 这发生在“SerializeRequest”和“Bef
[DataMember(Name="addToInventory")]
public bool AddToInventory
{
get
{
return this.m_addToInventory;
}
set
{
this.m_addToInventory = value;
}
}
该对象由Json.Net序列化为Json,转换为字节数组,然后用于构造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);
你能创建一个简短的演示程序来重现问题并将其发布到你的问题中吗?嗨,Brian,有200个DTO,包括这个都可以工作。它实际上只是一个属性上的真值与假值,在这个属性上有其他bool属性,等等,可以很好地工作。狂野,嗯?在这个广泛的API中,我无法在任何地方复制它。我已经把房子贴在上面了。