C# MVC中Api控制器的依赖注入
我正在Asp.NETMVC4中使用CastleWindsor的依赖项注入。 我使用DefaultControllerFactory模式,它适用于我所有的Mvc控制器 今天,我添加了一个新的jQuery控件jqGrid,它使用ApiController ItemsApiController 获取数据。 该控件位于普通Mvc控制器ItemsController和jqGrid Url属性的视图中 设置为/api/ItemsApi 当我启动页面时,控件为空,并且不会调用ItemsApiController。 在没有依赖项注入的虚拟项目中,相同的代码按预期工作。我也是 很确定依赖注入是问题的原因 在我的DefaultControllerFactory中,我可以看到路由解析不正确:C# MVC中Api控制器的依赖注入,c#,asp.net-mvc-4,dependency-injection,castle-windsor,C#,Asp.net Mvc 4,Dependency Injection,Castle Windsor,我正在Asp.NETMVC4中使用CastleWindsor的依赖项注入。 我使用DefaultControllerFactory模式,它适用于我所有的Mvc控制器 今天,我添加了一个新的jQuery控件jqGrid,它使用ApiController ItemsApiController 获取数据。 该控件位于普通Mvc控制器ItemsController和jqGrid Url属性的视图中 设置为/api/ItemsApi 当我启动页面时,控件为空,并且不会调用ItemsApiControlle
controller=Items;
action=api;
id=ItemsApi;
我希望:
controller=ItemsApi;
action=GET;
我在WebApiConfig中注册了名为first的DefaultApi,并在RouteConfig中注册了默认路由
当我将Url属性更改为./../api/ItemsApi时,我在虚拟项目中没有执行的操作会调用ItemsApiController,但不会通过
依赖项注入,因此仅使用默认构造函数
更新:
当我另外实现IHttpControllerSelector接口时,ItemsApiController被发送到
public HttpControllerDescriptor SelectController(HttpRequestMessage request)
{
var controllerName = routeData.Values["controller"];
Resolve<??>
}
但我不知道如何把这个名字和温莎城堡结合起来
这是正确的方法吗?如果是,如何将IHttpControllerSelector与Castle结合起来?我放弃了,将api控制器用作合成根 我认为以某种方式编写自己的框架是可能的,但它也会使事情变得复杂
复杂的依赖注入应该会让我的生活更轻松。你有没有考虑过挥舞出你的默认构造函数,这样你的DI容器就不会和这两者混淆?@WillMarcouiller是的,我有