如何解决升级到Server 2019后,WCF服务编码单引号
将我们的网络服务器升级到Windows 2019(从2008年开始)后,我们的WCF服务(.NET 3.5)响应均经过html编码。 为了澄清起见,响应应该是经过编码的xml字符串(有意通过System.Web.HttpUtility.HtmlEncode)-但是在升级后,响应似乎被编码了两次。这是一个示例:
服务器升级之前的旧响应(请注意,未对ResultName上的单引号进行编码):
<a:ResultData><![CDATA[<Result><schema><ts name='ResultName' … </a:ResultData>
服务器升级后的新响应(对单引号进行编码)
<a:ResultData><![CDATA[<Result><schema><ts name='ResultName' … </a:ResultData>
是否存在我们可能会错过的任何IIS设置会导致此行为?还是我们需要启用/禁用的某些WCF特定行为?我已经在网上四处张望,还没有找到任何特定于此问题的信息。鉴于代码本身并没有改变并且可以正常工作,我们正在寻找服务器配置来提供答案,但没有找到罪魁祸首。
感谢您的帮助!
解决方法
问题出在System.Web.HttpUtility.HtmlEncode的版本中。
System.Web v2不编码单引号,而System.Web v4编码。
不幸的是,我们没有在新服务器上设置应用程序池,并且WCF服务运行在更新版本的.NET中,该版本加载了更新版本的System.Web v4,该版本对单引号进行了编码。
为WCF服务分配了正确的应用程序池后,问题已解决。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。