简单注入器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时缺少什么?

简单注入器Web Api控制器构造函数注入失败

具有属性WebActivator.PostApplicationStartMethod的程序集需要与启动项目的输出目录(即webapi/bin)位于同一目录中

无法正确构造控制器,因为Autofac尚未设置为依赖解析程序-由于未加载程序集,因此从未调用Initialize函数)