gpt4 book ai didi

c# - Unity.MVC 无法使用参数解析我的 Controller 构造函数

转载 作者:行者123 更新时间:2023-11-30 16:01:15 28 4
gpt4 key购买 nike

我有一个 ASP.MVC 4 站点,它也有一个 Web API 2 Controller 。我正在为 DI 使用 Unity.MVC。 当我从 javascript 调用 API 时,它说它无法创建 Controller 的实例。如果我创建一个默认构造函数,它会创建实例,但当然依赖项为 null,但至少我知道该部分正在工作。

这是我的 API 函数:

public class ContactController : ApiController
{
IContactService service;

// dependency injection is being done here by Unity. look in UnityConfig where we register IContactSevice to ContactService. Whenever asp.net see's IContactService it now knows to make a new ContactService instance
// we do this for 2 reasons: 1) this makes unit testing possible where we can mock the IContactService and 2) this makes maintaining the code easier where we can change the contact service class we want to use later and we wouldn't have to change the code here in this controller
public ContactController(IContactService _service)
{
service = _service;
}

这是在 UnityConfig.cs 中(当我从 NuGet 获取它并填写依赖项时,它是自动为我生成的)。当我启动应用程序时,它会被调用。

public static void RegisterTypes(IUnityContainer container)
{
container.RegisterType<IContactService, ContactService>();
}

我错过了什么?

最佳答案

WebAPI Controller 有单独的 Unity 注册。由于您已经在使用 Unity.MVC 包,您可以添加 Unity.AspNet.WebApi Bootstrap 。

由于配置是自动替换的,我会在导入第二个包之前保存 UnityConfig.cs 的内容,然后手动组合两者。但真正的区别在于单独的 Unity*Activator.cs 文件。

关于c# - Unity.MVC 无法使用参数解析我的 Controller 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38902968/

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