WCF客户端从Java Web服务接收Date值,其中以XML格式发送到客户端的日期为:
<sampleDate>2010-05-10+14:00</sampleDate>
Run Code Online (Sandbox Code Playgroud)
现在接收此日期的WCF客户端在时区(+08:00),当客户端反序列化Date值时,它将转换为以下DateTime值:
2010-05-09 18:00 +08:00
但是我们想忽略从服务器发送的+14:00,以便客户端中的序列化Date值为:
2010-05-10
请注意,+ 14:00不一致,可能是+10:00,+ 11:00等,因此无法在客户端使用DateTime转换来获取所需的日期值.
如何在WCF中轻松实现?
提前致谢.
正确的WCF解决方案是否可以实现IClientMessageFormatter?
对我来说最干净的解决方案是如上所述实现IClientMessageFormatter.这是一个例子:
C#代码
public class ClientMessageFormatter : IClientMessageFormatter
{
IClientMessageFormatter original;
public ClientMessageFormatter(IClientMessageFormatter actual)
{
this.original = actual;
}
public void RemoveTimeZone(XmlNodeList nodeList)
{
if (nodeList != null)
{
foreach (XmlNode node in nodeList)
{
node.InnerText = Regex.Replace(node.InnerText, @"[\+\-]\d\d:\d\d", "");
}
}
}
#region IDispatchMessageFormatter Members
public object DeserializeReply(Message message, object[] parameters)
{
Message newMessage = null;
Message tempMessage;
MessageBuffer buffer;
MemoryStream ms;
XmlDocument …Run Code Online (Sandbox Code Playgroud)