gpt4 book ai didi

c# - 简单注入(inject)器 Web Api Controller 构造函数注入(inject)失败

转载 作者:太空宇宙 更新时间:2023-11-03 13:17:16 24 4
gpt4 key购买 nike

我的 Web Api 应用程序在尝试实例化注入(inject)的 Controller 时失败。我正在使用简单的注入(inject)器。引导注入(inject)器如下:

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

被注入(inject)的 Controller 。

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)位于同一目录中

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

关于c# - 简单注入(inject)器 Web Api Controller 构造函数注入(inject)失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25676617/

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