0

我们的 .Net 4 组件通过 WCF 客户端代理访问第三方 Web 服务。第三方 Web 服务的 WSDL 包含 Protect Tokens 安全策略:

<sp:ProtectTokens />

因此,Visual Studio 2013 生成的自定义绑定配置包含:

protectTokens="true" 

我们已经在我们的本地环境中使用它几个星期了,没有任何问题。但是,在使用此版本的应用程序更新我们的 Azure 环境时,我们发现它会引发异常:

Unrecognized attribute 'protectTokens'.
Note that attribute names are case-sensitive

MSDN似乎对支持protectTokens 的.NET 版本存在冲突。链接页面的标题为 .NET 4.6 和 4.5,但其页脚声明“自 3.0 起可用”。无论如何,该应用程序是为 4.0 构建的,正如我所说,在本地环境中没有错误。

是什么导致 Azure 中的错误?这是 OS 系列 2 (2008R2)。

4

1 回答 1

0

SecurityElementBase.ProtectTokens 属性,如果仅在框架中可用 >= 4.5

您可以在此处查看ProtectTokens文档

框架 4.5、4.6 的完整 SecurityElementBase 类属性(您可以获得ProtectTokens属性)

框架 4.0 的完整 SecurityElementBase 类属性(没有此类ProtectTokens属性)

整个故事

msdn 文档错误。

我在.net 4 和 4.5的程序集SecurityElementBase.dll中深入研究 IL 。猜猜 .Net < 4.5 中确实没有ProtectTokens属性。

  1. .Net 4C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.ServiceModel.dll
  2. .Net 4.5C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.ServiceModel.dll

您可以使用 VS2015 对象资源管理器更轻松地对其进行验证。

System.ServiceModel.dll .NetFX 4

System.ServiceModel.dll .net 4

System.ServiceModel.dll .NetFX 4.5

System.ServiceModel.dll .net 4.5]

于 2015-12-15T13:15:27.427 回答