升级到Server 2019后,WCF服务编码单引号

将我们的网络服务器升级到Windows 2019(从2008年开始)后,我们的WCF服务(.NET 3.5)响应均经过html编码。 为了澄清起见,响应应该是经过编码的xml字符串(有意通过system.web.HttpUtility.HtmlEncode)-但是在升级后,响应似乎被编码了两次。这是一个示例:

服务器升级之前的旧响应(请注意,未对ResultName上的单引号进行编码):

<a:ResultData><![CDATA[&lt;Result&gt;&lt;schema&gt;&lt;ts name='ResultName' … </a:ResultData>

服务器升级后的新响应(对单引号进行编码)

<a:ResultData><![CDATA[&lt;Result&gt;&lt;schema&gt;&lt;ts name=&#39;ResultName&#39; … </a:ResultData>

是否存在我们可能会错过的任何IIS设置会导致此行为?还是我们需要启用/禁用的某些WCF特定行为?我已经在网上四处张望,还没有找到任何特定于此问题的信息。鉴于代码本身并没有改变并且可以正常工作,我们正在寻找服务器配置来提供答案,但没有找到罪魁祸首。

感谢您的帮助!

tfqguo 回答:升级到Server 2019后,WCF服务编码单引号

问题出在System.Web.HttpUtility.HtmlEncode的版本中。

System.Web v2不编码单引号,而System.Web v4编码。

不幸的是,我们没有在新服务器上设置应用程序池,并且WCF服务运行在更新版本的.NET中,该版本加载了更新版本的System.Web v4,该版本对单引号进行了编码。

为WCF服务分配了正确的应用程序池后,问题已解决。

本文链接:https://www.f2er.com/1486924.html

大家都在问