我们的.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)。
答案 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。
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.ServiceModel.dll
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.ServiceModel.dll
您可以使用VS2015对象资源管理器更轻松地验证它。