【问题标题】:WCF Service With Restricted/Special Characters in Response响应中具有受限/特殊字符的 WCF 服务
【发布时间】:2014-07-25 06:54:49
【问题描述】:

我有一个 WCF 服务,它返回一个带有 &、 的字符串响应。例如

<response>&amp;</response>

实际上,我发送的是 '&' 字符,但由于某种原因它被编码了。

相反,我想发送解码后的响应。我想要的回复是-&lt;response&gt;&amp;&lt;/response&gt;

有人可以建议如何实现吗?

谢谢。

【问题讨论】:

    标签: wcf xmlserializer


    【解决方案1】:

    XML 序列化器必须对特殊字符进行编码才能生成格式良好的 XML 文档。

    根据XML specification,& 字符不得以其文字形式出现在文档中的任何位置,因此是编码。

    消费应用程序应该已经意识到这一点,并且知道如何解码 &回到&符号。但是,如果您在 Soap UI 等基于 XML 的软件上查看您的响应,您将继续看到编码形式的符号。

    【讨论】:

      【解决方案2】:

      你可以使用

      System.Web.HttpUtility.HtmlDecode()
      

      在您的特定数据合同属性/整个响应字符串上。或者您可以使用以下文章中的方法,该方法对开发人员不太友好,但如果您的回复中有很多特殊字符,则可以使用该方法。

      http://seroter.wordpress.com/2007/11/09/xml-web-services-and-special-characters/

      【讨论】:

      • 谢谢阿杰。但是 System.Web.HttpUtility.HtmlDecode() 如果我在显示响应之前使用它,它只能在客户端工作。如果我在 DataMember 属性中添加它没有帮助。得到 { 返回 System.Web.HttpUtility.HtmlDecode(response); } 设置 { 响应 = System.Web.HttpUtility.HtmlDecode(value); }
      • 实际上发生的是,我没有将编码字符串分配给响应。我认为 WCF 服务在发送响应时对其进行编码。
      • 你必须在客户端自己做。我知道你自己不编码 WCF 是自己做的。您所做的 DataMember 属性将不起作用。客户端有什么问题?
      • 我们在此回复中发送快递跟踪信息 (URL)。所以我必须请我们的客户(在规范中提到解码)来解码我们对他们消费应用程序的响应。只是想如果我们可以从 WCF 服务本身发送解码的字符串,我们就不必向我们的客户/文档提及这一点。
      猜你喜欢
      • 2011-08-15
      • 2015-01-14
      • 1970-01-01
      • 1970-01-01
      • 2017-10-15
      • 2014-04-06
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      相关资源
      最近更新 更多