c# - 升级到 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 服务分配了正确的应用程序池,问题就解决了。
推荐阅读
- javascript - 如何在 Immutable.js 中序列化数据历史以启用时间旅行?
- angular - Angular 8 中的页面导航不会触发 canDeactivate()
- typescript - 处理响应类型 async/await - IDE 错误
- javascript - D3 捏缩放在 v5 中不起作用,但在 v4 中起作用
- google-sheets - 具有 3 个标准的计数
- python - 计算度数 k 的平均聚类
- scala - Scala - 按可选字段排序,最后没有值
- reactjs - “ReactComponent as”的正确用法
- datagrid - Apache Royale:SDK 0.9.7 上的 DataGrid Jewel 问题
- postgresql - 无法使用 pgAdmin 4 和 psql CLI 连接到 Heroku Postgres