diff --git a/AspNetDependencyInjection.WebApi/DependencyInjectionWebApiDependencyResolver.cs b/AspNetDependencyInjection.WebApi/DependencyInjectionWebApiDependencyResolver.cs index 94c190a..59b06bb 100644 --- a/AspNetDependencyInjection.WebApi/DependencyInjectionWebApiDependencyResolver.cs +++ b/AspNetDependencyInjection.WebApi/DependencyInjectionWebApiDependencyResolver.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Web.Http; using System.Web.Http.Controllers; using System.Web.Http.Dependencies; @@ -22,6 +23,8 @@ internal DependencyInjectionWebApiDependencyResolver( ApplicationDependencyInjec { this.di = di ?? throw new ArgumentNullException(nameof(di)); this.rootServiceProvider = rootServiceProvider ?? throw new ArgumentNullException( nameof( rootServiceProvider ) ); + + GlobalConfiguration.Configuration.DependencyResolver = this; } /// When is for a then the type will be resolved, otherwise an exception is thrown. Otherwise this method returns null if the type cannot be resolved or created. @@ -39,7 +42,15 @@ public Object GetService(Type serviceType) return this.di.ObjectFactoryCache.GetRequiredRootService( serviceType, useOverrides: true ); } - return this.di.ObjectFactoryCache.TryGetRootService( serviceType, useOverrides: true, out Object resolved ) ? resolved : null; + try + { + return this.di.ObjectFactoryCache.TryGetRootService( serviceType, useOverrides: true, out Object resolved ) ? resolved : null; + } + catch + { + // ASP.Net WebApi: all other dependencies are optional + return null; + } } /// Calls by converting to . @@ -92,7 +103,15 @@ public Object GetService( Type serviceType ) return this.di.ObjectFactoryCache.GetRequiredService( this.GetServiceProvider, serviceType, useOverrides: true ); } - return this.di.ObjectFactoryCache.TryGetService( this.GetServiceProvider, serviceType, useOverrides: true, out Object resolved ) ? resolved : null; + try + { + return this.di.ObjectFactoryCache.TryGetService( this.GetServiceProvider, serviceType, useOverrides: true, out Object resolved ) ? resolved : null; + } + catch + { + // ASP.Net WebApi: all other dependencies are optional + return null; + } } /// Calls by converting to .