Im trying to use StructureMap to initialize my ValuesController that derivate from ApiController but i'm getting an exception that says:
The IControllerFactory '...CustomControllerFactory' did not return a controller for the name 'api'.
Here is the code..
public class CustomControllerFactory : DefaultControllerFactory
{
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
if (controllerType == null)
return null;
return (Controller)ConcretizationsManager.GetInstance(controllerType);
}
}
basically ConcretizationsManager is a wrapper of StructureMap.. This method always runs ok for Controllers of Controller type, but for APIController dont.
Anyone to get me to the right direction? Very thanks
For the Web API I am using Custom ServiceActivator like this (i.e. different factory then for MVC):
public class ServiceActivator : IHttpControllerActivator
{
public ServiceActivator(HttpConfiguration configuration) {}
public IHttpController Create(HttpRequestMessage request
, HttpControllerDescriptor controllerDescriptor, Type controllerType)
{
var controller = Factory.CreateInstance(controllerType) as IHttpController;
return controller;
}
}
Where Factory is my wrapper of the Sturcturemap API
And in the App_Start\WebApiConfig.cs
I do register that like this:
config.Services.Replace(typeof(IHttpControllerActivator), new ServiceActivator(config));