我正在开发一个Web,我决定使用自定义的DependencyResolver。我参考了this [Dependency Injection for Web API Controllers]的文章。到目前为止,在控制器的依赖注入方面,一切都运行得很好。Owin启动类中配置的代码片段
private void RegisterIoC(HttpConfiguration config)
{
_unityContainer = new UnityContainer();
_unityContainer.RegisterType<IAccountService, AccountService>();
.........
.........
config.DependencyResolver = new UnityResolver(_unityContainer);
}
但是在时,当Api第一次启动时,会在UnityResolver's 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配置中没有为上面的类型提供映射。
现在是我的问题:-,如果我实现自定义unity DependencyResolver,我需要定义上述类型的映射,如果需要定义它们相应的默认实现类型,或者是否有其他方法来实现DependencyResolver。我真的很担心,即使应用程序现在运行得很好,如果不能解决上面的类型,以后可能会导致严重的问题。请帮帮。
最后一个补充:-以下类型的,当我在my web api中请求任何操作时抛出相同的ResolutionFailedException。
System.Web.Http.Dispatcher.IHttpControllerActivator
System.Web.Http.Validation.IModelValidatorCache
System.Web.Http.Controllers.IHttpActionInvoker
https://stackoverflow.com/questions/24114970
复制相似问题