Azure中的WCF配置错误:无法识别的属性“protectTokens”。在本地.NET 4环境中正常工作

时间:2015-12-15 10:40:33

标签: .net azure .net-4.0 wcf-configuration

我们的.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似乎与.NET版本支持的protectTokens相冲突。链接页面是.NET 4.6和4.5,但它的页脚声明“从3.0开始可用”。无论如何,该应用程序是为4.0构建的,正如我所说,在本地环境中没有错误。

Azure中导致错误的原因是什么?这是OS Family 2(2008R2)。

1 个答案:

答案 0 :(得分:0)

SecurityElementBase.ProtectTokens属性如果仅在框架&gt; = 4.5中可用

您可以在此处查看 ProtectTokens 文档

Full SecurityElementBase class properties for framework 4.5 , 4.6(您可以获得 ProtectTokens 属性)

Full SecurityElementBase class properties for framework 4.0(没有 ProtectTokens 属性

整个故事

msdn文档错误。

我正在为.net 4和4.5的程序集 SecurityElementBase.dll 挖掘IL。并猜测.Net&lt;中确实没有ProtectTokens属性。 4.5。

  1. .Net 4 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.ServiceModel.dll
  2. .Net 4.5 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.ServiceModel.dll
  3. 您可以使用VS2015对象资源管理器更轻松地验证它。

    System.ServiceModel.dll .NetFX 4

    System.ServiceModel.dll .net 4

    System.ServiceModel.dll .NetFX 4.5

    System.ServiceModel.dll .net 4.5]