的WebAPI + APIController与structureMap [英] WebAPI + APIController with structureMap

查看:198
本文介绍了的WebAPI + APIController与structureMap的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试着用StructureMap来初始化我Values​​Controller从ApiController衍生物,但我发现一个例外,说:

Im trying to use StructureMap to initialize my ValuesController that derivate from ApiController but i'm getting an exception that says:

在IControllerFactory...... CustomControllerFactory未返回控制器的名称API。

The IControllerFactory '...CustomControllerFactory' did not return a controller for the name 'api'.

下面是code ..

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);
    }
}

基本上ConcretizationsManager是StructureMap的包装.. 此方法始终运行确定为控​​制器的类型控制器,但APIController不。

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

推荐答案

有关我使用自定义的网络API的 ServiceActivator 的这样的(即不同的工厂则对于MVC):

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;
    }
}

其中,厂是我的Sturcturemap API的封装

而在 App_Start \ WebApiConfig.cs 我做登记,像这样:

And in the App_Start\WebApiConfig.cs I do register that like this:

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

这篇关于的WebAPI + APIController与structureMap的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆