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

フレームワーク >= 4.5 でのみ使用可能な場合のSecurityElementBase.ProtectTokens プロパティ

ここでProtectTokensのドキュメントを確認できます

フレームワーク 4.5 、4.6 の完全な SecurityElementBase クラス プロパティ( ProtectTokensプロパティを取得できます)

フレームワーク 4.0 の完全な SecurityElementBase クラス プロパティ(そのようなProtectTokensプロパティはありません)

全体の話

msdn ドキュメントのバグ。

.net 4および4.5のアセンブリSecurityElementBase.dllでILを掘り下げていました。ProtectTokens.Net < 4.5 に Propertyが実際にないことを推測してください。

  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

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 に答える