gpt4 book ai didi

.net - WebAPI +具有结构图的APIController

转载 作者:行者123 更新时间:2023-12-03 11:49:44 25 4
gpt4 key购买 nike

我正在尝试使用StructureMap初始化我的AsController派生的ValuesController,但是我遇到了一个异常:

IControllerFactory'... CustomControllerFactory'未返回名称为'api'的 Controller 。

这是代码。

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

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

基本上,ConcretizationsManager是StructureMap的包装。
对于Controller类型的Controller,此方法始终可以正常运行,但对于APIController,则不会运行。

有人要我指引正确的方向吗?
很感谢

最佳答案

对于Web API,我使用这样的Custom ServiceActivator(即与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中,我确实这样注册:
config.Services.Replace(typeof(IHttpControllerActivator), new ServiceActivator(config));

关于.net - WebAPI +具有结构图的APIController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18896758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com