そのコンストラクターが依存関係を取り、それが IoC コンテナー (この場合は AutoFac) による依存関係のインスタンス化である場合に、WCF サービスのコンストラクターによってスローされた例外を処理する方法はありますか?
次のコンストラクターを持つ WCF サービスを検討してください。
public InformationService(IInformationRetriever informationRetriever)
{
_informationRetriever = informationRetriever;
}
//... the service later makes use of the injected InformationRetriever
このサービスは、AutoFac WcfIntegration とAutofacWebServiceHostFactory
(たまたま RESTful サービスである) を使用します。
依存関係は、サービスの global.asax.cs に登録されます。つまり、次のようになります。
builder.RegisterType<InformationRetriever>()
.As<IInformationRetriever>()
これで、InformationRetriever
実装はコンストラクターでいくつかのチェックを実行して、ジョブを実行できるようにすべてが整っていることを確認します。このフェーズで問題が検出されると、例外がスローされます。
ただし、サービスの呼び出し元が AutoFac 例外を受け取ることは望ましくありません。
An exception was thrown while invoking the constructor ... on type InformationRetriever
効果的に私はテストしようとしています:
InformationServiceが実行されている場合
GetSomeInformation () メソッドを呼び出すと
また、InformationRetriever をインスタンス化できません
次に、わかりやすいエラーメッセージを返したい
実際の例外をログに記録します
これは私のデザインの問題ですか、それともこの問題を克服または防止するための既知のパターンはありますか?
私は探し回りましたが、この種の問題に関する情報は見つかりませんでした。