1


0

私はバランスの取れたwcfサービスをロードすることを話している既存のasp.netアプリケーションを持っています(iisがホストされていて、servicePrincipalNameとして設定されたアカウントで実行されているアプリケーションプールなどで)。 wcfサービスは、すべてFaultContract(typeof(x)、ProtectionLevel = ProtectionLevel.None)で定義されたいくつかのカスタムフォルトを返します - これらのサービスは一般に公開されていません。 クライアントは「サービス参照」によって生成されたクラスを使用してサービスにアクセスします。

これはうまくいきましたが、今、最新のコードベースで、私たちは「一次署名は暗号化されなければなりません」を得ています。サービスがこれらの障害の1つを返したときのクライアント上の例外。 サービスコードと設定は変更されていません(少なくともフォルトを生成する従来の部分)。 クライアント側のサービス参照生成コードは、最も変更されたように見えます(多くの場合、削除されて再作成されます)。

セキュリティ構成は1年以上変わりません。 すべての更新はかなり最新のものです。 これを3つの環境でテストしました。新しいコードベースをデプロイするとすぐに、障害によって例外が生成され始めます。 生成されたクラスに含まれる必要があるように見えますが、Visual Studioによって生成されるため、非常に複雑です。

この音は誰にもおなじみでしょうか。 助言がありますか?

更新:ProtectionLevel属性を削除してデフォルトに設定すると問題が解決するが、Noneを指定すると失敗するのは不思議だ。 おそらくそれは運用契約またはサービス契約のデフォルトレベルと矛盾しますが、これらの値は過去1年間変わっていないので、今うまくいったものが変わらない理由を説明していません。

更新:価値のあることに、この生成されたgenの変更は2.0.50727.3053と2.0.50727.3082の間で起こりました(生成されたコードのruntime-versionのコメントによると)。

1 Answer


0


私は自分自身でこの問題を経験したことはありませんが、私の質問は:なぜあなたはあなたの障害契約で "ProtectionLevel = None"を指定しているのですか? その理由は何ですか?

そうでなければ、私はまったくそれを指定しないことを強くお勧めします - デフォルトはProtectionLevel = EncryptAndSignであり、それは通常あなたの最善の策です。 非常に強く明確な理由がない限り、試してみてください。

マーク