如果输入字符串包含html或xml,则调用WCF SoapService方法会导致异常

时间:2016-12-08 08:43:41

标签: c# html xml wcf soap

我创建了一个接收json字符串的方法,方法定义如下:

[OperationContract]
string AccessAtomService(string cmd);

当我通过以下输入调用此方法时它起作用:

{
  "receivers": [
    "kevin.chan@xxx.com"
  ],
  "subject": "Notification",
  "isHtml": false,
  "content": "Test ok",
  "serviceName": "xxx"
}

但是以下json输入会导致异常:

{
  "receivers": ["kevin.chan@xxx.com"],
  "subject": "EMS3000 Notification",
  "isHtml": false,
  "content":"<a href=\"http://www.w3schools.com/html/\">Visit our HTML tutorial</a>",
  "serviceName": "xxx"
}

似乎我的json字符串中的任何xml元素都会导致异常, 来自WCF目标日志的异常消息是:

  

System.ServiceModel.Dispatcher.NetDispatcherFaultException,   System.ServiceModel,Version = 4.0.0.0,Culture = neutral,   公钥= b77a5c561934e089

First StackTrace项目是:

  

System.ServiceModel.Dispatcher.PrimitiveOperationFormatter.DeserializeRequest(消息   message,Object []参数)

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

在将内容发送到服务之前尝试对其进行编码:

 {
"receivers": ["kevin.chan@xxx.com"],
"subject": "EMS3000 Notification",
"isHtml": false,
"content":"&lt;a href=\"http://www.w3schools.com/html/\"&gt;Visit our HTML tutorial&lt;/a&gt;",
"serviceName": "xxx"
}

答案 1 :(得分:0)

这是因为WCF使用XML序列化。

所以你正在使用的字符串正在搞乱反序列化。

MSDN WCF Serialization