Usando Simple Injector en Web API y OWIN

Estoy experimentando el mismo problema que se describe aquí y mi configuración es casi idéntica a la que realmente se basa en esta guía . Cuando accedo a un método en mi controlador obtengo este

Se produjo un error al intentar crear un controlador de tipo ‘TestController’. Asegúrese de que el controlador tenga un constructor público sin parámetros.

Aquí está el rastro de la stack

at System.Web.Http.Dispatcher.DefaultHttpControllerActivator .Create(HttpRequestMessage request, HttpControllerDescriptor controllerDescriptor, Type controllerType)\r\n at System.Web.Http.Controllers.HttpControllerDescriptor .CreateController(HttpRequestMessage request)\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext() 

Y aquí está el rastro de stack de la excepción interna

 at System.Linq.Expressions.Expression.New(Type type)\r\n at System.Web.Http.Internal.TypeActivator.Create[TBase](Type instanceType)\r\n at System.Web.Http.Dispatcher.DefaultHttpControllerActivator .GetInstanceOrActivator(HttpRequestMessage request, Type controllerType, Func`1& activator)\r\n at System.Web.Http.Dispatcher.DefaultHttpControllerActivator .Create(HttpRequestMessage request, HttpControllerDescriptor controllerDescriptor, Type controllerType) 

Así es como se ve mi controlador

 public class TestController : ApiController { private readonly ITestRepo _repo; public TestController(ITestRepo repo) { _repo = repo; } public IEnumerable Get() { return new string[] { "value1", "value2" }; } public string Get(int id) { return _repo.GetId(id); } } 

Y así es como configuro Simple Injector.

  public class Startup { public void Configuration(IAppBuilder app) { // Create the container as usual. var container = new Container(); // Register your types, for instance using the RegisterWebApiRequest // extension from the integration package: container.RegisterWebApiRequest(); container.RegisterWebApiControllers(GlobalConfiguration.Configuration); container.Verify(); GlobalConfiguration.Configuration.DependencyResolver = new SimpleInjectorWebApiDependencyResolver(container); // ConfigureOAuth(app, container); var config = new HttpConfiguration(); WebApiConfig.Register(config); app.UseWebApi(config); } } 

Tuve el mismo problema pero con UnityDependencyResolver. Pero creo que también debería funcionar para SimpleInjectorWebApiDependencyResolver. Intente registrar su resolutor de esta manera (como propiedad de la configuración HTTP ):

 public void Configuration(IAppBuilder app) { var container = GetContainer(); // Initialise container HttpConfiguration config = new HttpConfiguration { DependencyResolver = new SimpleInjectorWebApiDependencyResolver(container); }; WebApiConfig.Register(config); app.UseWebApi(config); }