简单注入器Web Api控制器构造函数注入失败
本文关键字:构造函数 注入 失败 控制器 Api 注入器 Web 简单 | 更新日期: 2023-09-27 18:20:39
My Web Api应用程序在尝试实例化注入的控制器时失败。我使用的是Simple Injector。引导注射器如下:
[assembly: WebActivator.PostApplicationStartMethod(typeof(SimpleInjectorWebApiInitializer), "Initialize")]
namespace WebApi
{
using System.Web.Http;
using SimpleInjector;
using SimpleInjector.Integration.WebApi;
public static class SimpleInjectorWebApiInitializer
{
public static void Initialize()
{
var container = new Container();
InitializeContainer(container);
container.RegisterWebApiControllers(GlobalConfiguration.Configuration);
container.Verify();
GlobalConfiguration.Configuration.DependencyResolver = new SimpleInjectorWebApiDependencyResolver(container);
}
private static void InitializeContainer(Container container)
{
container.RegisterWebApiRequest<ISomething, Something>();
}
}
}
正在注入的控制器。
namespace WebApi.Controllers
{
using System.Web.Http;
public class SomethingController : ApiController
{
private readonly ISomething _something;
public SomethingController(ISomething something)
{
_something = something;
}
public string Get()
{
return "Hello world";
}
}
}
我一直得到的错误是:
<Error>
<Message>An error has occurred.</Message>
<ExceptionMessage>
An error occurred when trying to create a controller of type 'SomethingController'. Make sure that the controller has a parameterless public constructor.
</ExceptionMessage>
<ExceptionType>System.InvalidOperationException</ExceptionType>
</error>
配置Simple Injector
时缺少什么?
具有属性WebActivator.PostApplicationStartMethod的程序集需要与启动项目的输出目录(即webapi/bin)位于同一目录中
无法正确构造控制器,因为Autofac尚未设置为依赖解析程序-由于未加载程序集,因此从未调用Initialize函数)