覆盖网络服务中传入的无效日期时间值
我目前正在编写一个必须与现有 wsdl 匹配的 C# Web 服务,并且我的 Web 服务由第三方 Web 服务调用(我的 Web 服务充当回调)。
但是,我传递的值无效,并且第三方网络服务不愿意更改其网络服务。
我得到: '2010-10-24 12:12:13' 在 xml 中键入字符串作为日期时间(这不符合规范,因为它必须是 '2010-10-24T12:12:13' ) 有什么方法可以覆盖 XML 序列化,使其仍然与 wsdl 匹配但接受“任何内容”?
[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
public DateTime createdAt {
get {
return this.createdAt;
}
set {
this.createdAtField = value;
}
}
I'm currently writing a C# webservice that has to match an existing wsdl, and my webservice is called by a third party webservice (My webservice acts as a callback).
However I'm being passed invalid values, and the third party webservice is unwilling to change their webservice.
I'm getting: '2010-10-24 12:12:13' type strings in the xml as a DateTime, (which doesn't meet the spec as it has to be '2010-10-24T12:12:13')
Is there any way to override the XML Serialization so that it still matches the wsdl but accepts "anything"?
[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
public DateTime createdAt {
get {
return this.createdAt;
}
set {
this.createdAtField = value;
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以创建一个 SoapExtension,在框架反序列化肥皂 xml 之前对其进行修改。如果您使用 wcf 和服务引用,则需要以不同的方式进行操作。这是我不久前为清理消息而创建的一些代码。
在你的 app/web.config 中(这是为了清理来自 SOAP 服务的传入数据)
以及在我的例子中删除非法 SOAP 字符的代码
You could make a SoapExtension which modifies the soap xml before it's being deserialized by the framework. If you use wcf and service reference you would need to do it differently. Here's some code I created to clean up a message some time ago.
In your app/web.config (this is for cleaning incoming data from a soap service)
and the code which in my case removes illegal SOAP characters