.net - route - webapi models




WebAPI+APIController con structureMap (2)

Con StructureMap 3 è disponibile il primo supporto per le parti

nuget installa Structuremap.WebApi2

StructureMap 4 è stato rilasciato e potrebbe essere utilizzato anche, tuttavia potrebbero essere necessarie piccole modifiche . Non ho confermato per me stesso.

Sto cercando di usare StructureMap per inizializzare il mio ValuesController che deriva da ApiController ma sto ricevendo un'eccezione che dice:

IControllerFactory '... CustomControllerFactory' non ha restituito un controller per il nome 'API'.

Ecco il codice ..

public class CustomControllerFactory : DefaultControllerFactory
{
    protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
    {
        if (controllerType == null)
            return null;

        return (Controller)ConcretizationsManager.GetInstance(controllerType);
    }
}

fondamentalmente ConcretizationsManager è un wrapper di StructureMap .. Questo metodo funziona sempre ok per i Controllers di tipo Controller, ma per APIController non.

Qualcuno per farmi nella giusta direzione? Grazie mille


Per l'API Web sto utilizzando Custom ServiceActivator come questo (es. Factory diverso per 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;
    }
}

Dove Factory è il mio wrapper dell'API Sturcturemap

E in App_Start\WebApiConfig.cs mi registro in questo modo:

config.Services.Replace(typeof(IHttpControllerActivator), new ServiceActivator(config));






structuremap