RestSharp - XmlSerializer 不使用 DateFormat 属性
RestSharp - XmlSerializer not using the DateFormat property
我遇到了 RestSharp 库的问题。默认情况下,它使用 dd/MM/yyyy HH:mm:ss
格式序列化 DateTime 对象。这不适用于我似乎只接受 yyyy-MM-ddTHH:mm:ss
的 WCF 服务,因此我尝试使用 request.DateFormat = "yyyy-MM-ddTHH:mm:ss
更改请求的序列化。
这个 属性 ,即使设置正确,似乎对序列化的影响为零。至少在使用默认 RestSharp.Serializers.XmlSerializer
时是这样。如果我尝试使用 DotNetXmlSerializer
,DateFormat 可以正常工作,但是序列化器不包含我的 XMLNS link 并向 xml 输出添加版本和编码行,其中一个或两个这与 WCF 服务也不兼容。
有没有人有任何建议我在 XmlSerializer
上做错了什么?
这里是相关的代码块:
var req = new RestRequest(endpoint, Method.POST);
req.RequestFormat = DataFormat.Xml;
//req.XmlSerializer = new DotNetXmlSerializer();
req.XmlSerializer = new XmlSerializer();
req.DateFormat = DATE_FORMAT;
req.AddBody(model, XMLNS);
其中 private const string DATE_FORMAT = "yyyy-MM-ddTHH:mm:ss"
和 XMLNS
是 WCF 请求中使用的 URL(取自端点/帮助文档)。
貌似RestRequest.DateFormat
只在反序列化时使用:
/// <summary>
/// Used by the default deserializers to explicitly set which date format string to use when parsing dates.
/// </summary>
public string DateFormat { get; set; }
对于序列化,您需要在 serializer:
上明确设置
req.XmlSerializer = new XmlSerializer { DateFormat = DATE_FORMAT };
请注意,对于 DotNetXmlSerializer
, the underlying System.Xml.Serialization.XmlSerializer
does not support custom DateTime formats, according to this answer。
我遇到了 RestSharp 库的问题。默认情况下,它使用 dd/MM/yyyy HH:mm:ss
格式序列化 DateTime 对象。这不适用于我似乎只接受 yyyy-MM-ddTHH:mm:ss
的 WCF 服务,因此我尝试使用 request.DateFormat = "yyyy-MM-ddTHH:mm:ss
更改请求的序列化。
这个 属性 ,即使设置正确,似乎对序列化的影响为零。至少在使用默认 RestSharp.Serializers.XmlSerializer
时是这样。如果我尝试使用 DotNetXmlSerializer
,DateFormat 可以正常工作,但是序列化器不包含我的 XMLNS link 并向 xml 输出添加版本和编码行,其中一个或两个这与 WCF 服务也不兼容。
有没有人有任何建议我在 XmlSerializer
上做错了什么?
这里是相关的代码块:
var req = new RestRequest(endpoint, Method.POST);
req.RequestFormat = DataFormat.Xml;
//req.XmlSerializer = new DotNetXmlSerializer();
req.XmlSerializer = new XmlSerializer();
req.DateFormat = DATE_FORMAT;
req.AddBody(model, XMLNS);
其中 private const string DATE_FORMAT = "yyyy-MM-ddTHH:mm:ss"
和 XMLNS
是 WCF 请求中使用的 URL(取自端点/帮助文档)。
貌似RestRequest.DateFormat
只在反序列化时使用:
/// <summary>
/// Used by the default deserializers to explicitly set which date format string to use when parsing dates.
/// </summary>
public string DateFormat { get; set; }
对于序列化,您需要在 serializer:
上明确设置 req.XmlSerializer = new XmlSerializer { DateFormat = DATE_FORMAT };
请注意,对于 DotNetXmlSerializer
, the underlying System.Xml.Serialization.XmlSerializer
does not support custom DateTime formats, according to this answer。