私は Web API を開発しており、カスタム DependencyResolver を使用することにしました。この [Web API コントローラーの依存性注入]の記事を参照します。コントローラーへの依存性注入に関しては、これまでのところすべてがうまく機能しています。私の Owin スタートアップ クラスからの構成のコード スニペット
private void RegisterIoC(HttpConfiguration config)
{
_unityContainer = new UnityContainer();
_unityContainer.RegisterType<IAccountService, AccountService>();
.........
.........
config.DependencyResolver = new UnityResolver(_unityContainer);
}
しかし、Api が初めて起動するときに、 UnityResolver のGetServiceメソッド内でResolutionFailedException がスローされます(ただし、キャッチされます) 。ここに例外メッセージがあります
"Exception occurred while: while resolving.
Exception is: InvalidOperationException -
The current type, System.Web.Http.Hosting.IHostBufferPolicySelector,
**is an interface and cannot be constructed. Are you missing a type mapping?**"
上記の同じ例外が次のタイプでスローされます
System.Web.Http.Hosting.IHostBufferPolicySelector
System.Web.Http.Tracing.ITraceWriter
System.Web.Http.Metadata.ModelMetadataProvider
System.Web.Http.Tracing.ITraceManager
System.Web.Http.Dispatcher.IHttpControllerSelector
System.Web.Http.Dispatcher.IAssembliesResolver
System.Web.Http.Dispatcher.IHttpControllerTypeResolver
System.Web.Http.Controllers.IHttpActionSelector
System.Web.Http.Controllers.IActionValueBinder
System.Web.Http.Validation.IBodyModelValidator
System.Net.Http.Formatting.IContentNegotiator
上記のタイプのユニティ構成でマッピングを提供しなかったため、これらの ResolutionFailedException がスローされることはわかっています。
ここに私の質問があります:-、カスタムunity DependencyResolverを実装する場合、上記のタイプのマッピングを定義する必要があり、対応するデフォルトの実装タイプを定義する必要がある場合、またはDependencyResolverを実装する別の方法があります。アプリケーションは現在正常に動作していますが、上記のタイプの解決に失敗すると、後で深刻な問題が発生する可能性があることを本当に心配しています. 助けてください。
最後の追加:- 次のタイプの場合、Web API に何らかのアクションを要求すると、同じ ResolutionFailedException がスローされます。
System.Web.Http.Dispatcher.IHttpControllerActivator
System.Web.Http.Validation.IModelValidatorCache
System.Web.Http.Controllers.IHttpActionInvoker