0

背景: Microsoft Enterprise Library WCF 例外処理を使用している WCF プロジェクトがあります。

最近、操作とデータ コントラクトを、comanynamespace.xxx.WCF.Utilities という別のプロジェクト (.net アセンブリ) に移動することにしました。操作とデータ コントラクトを移動した後、新しいアセンブリを反映するように faultContractType 名前空間を変更しました。

VS2010 で Web サービスを起動すると、次のエラーが表示されます。

タイプ ExceptionPolicyImpl、キー「WCF Exception Shielding」のインスタンスを取得しようとしているときにアクティベーション エラーが発生しました

私は試しました:両方のプロジェクトに同じ参照が存在することを確認し、両方のプロジェクトが.net 4(クライアントモードなし)で実行されていることを確認するなど、どちらも問題の解決には役立ちませんでした。

最後に、Service Fault クラスを Web サービス プロジェクトにコピーして戻し、web.config の名前空間をローカルの名前空間を指すように変更しました。

faultContractType="comanynamespace.xxx.WCF.Utilities.ServiceFault、comanynamespace.xxx.WCF.Utilities.Services"

に:

faultContractType="comanynamespace.xxx.Web.Services.ServiceFault, comanynamespace.xxx.Web.Services"

これでエラーは解決しますが、両方の場所にサービス障害データ コントラクトが必要になりました。

Microsoft EL WCF 例外処理を使用して、別の .net アセンブリでサービス エラー (データ コントラクト) を使用できない理由を知っている人はいますか?

4

1 に答える 1

1

問題は、faultcontracttype の名前空間 (2 番目の部分) が

faultContractType="companyname.xxx.WCF.Utilities.Services.ServiceFault, companyname.xxx.WCF.Utilities.Services"

それ以外の

faultContractType="companyname.xxx.WCF.Utilities.Services.ServiceFault, companyname.xxx.WCF.Utilities"

companyname.xxx.WCF.Utilities は、アセンブリの名前空間です。

于 2012-11-16T20:11:00.180 に答える