私は、バランスの取れたwcfサービス(iisがホストされ、アプリケーションプール内でservicePrincipalNameとして設定されたアカウントで実行されている、など)を話す既存のasp.netアプリケーションを持っています。 wcfサービスは、FaultContract(typeof(x)、ProtectionLevel = ProtectionLevel.None)で定義されたいくつかのカスタムフォールトを返します。これらのサービスは公開されません。クライアントは、サービス参照に生成されたクラスを使用してサービスにアクセスします。WCF「プライマリシグネチャを暗号化する必要があります。 FaultContract with ProtectionLevel.None
これはうまくいきましたが、最新のコードベースでは、「プライマリシグネチャを暗号化する必要があります」となっています。サービスがこれらの障害の1つを返すときにクライアント上の例外が発生します。サービスコードと構成は変更されません(少なくとも障害を生成するレガシーパーツ)。クライアント側のサービス参照生成コードが最も変更されたように見えます(しばしば削除されて再作成されます)。
セキュリティ設定は1年以上変更されていません。すべてのアップデートはかなり最新です。これを3つの環境でテストしました。新しいコードベースをデプロイするとすぐに、エラーが発生して例外が生成されます。生成されたクラスにあるように見えますが、Visual Studioによって生成されるため、非常に混乱しています。
誰にでも馴染みやすいですか?助言がありますか?
更新:ProtectionLevel属性を削除してデフォルトにすることで、問題は「消え去る」が発生しますが、Noneを指定すると失敗する原因が不思議です。おそらく、これは運用契約またはサービス契約のデフォルトレベルと競合しているかもしれませんが、これらの値は過去1年間で変更されていないため、今はうまくいかなかった理由が説明されていません。
更新:このコードの変更は、2.0.50727.3053と2.0.50727.3082の間で発生しました(生成コードのランタイムバージョンコメントに従って)。
これは良い質問です。 2年前に、「他の当事者から保護されていない、または間違って保護されたフォルトが受信されました」というカスタムフォールトの問題に対応して行われました。保護レベルを「なし」に設定すると「元気になりました」というメッセージが表示され、内部サービスの仕組みを見て、オーバーヘッドを持たないというアイデアはOKと思われました。 WCFには新しく、WCFはとても新しく、期限を迎えていたので、うまくいきました。 – ongle