AutofacWebApiDependencyResolver 方法不存在

AutofacWebApiDependencyResolver method doesnt exist

我正在学习本教程 Youtube DI for dependency injection. This clear thing out for me however it does not show how to implement on a Web API using n-tier architecture. I also included followed this tutorial: C-Sharp AutoFac Web API Tutorial

这是我的代码的样子:

using Autofac;
using System.Linq;
using System.Reflection;
using System.Web.Http;

namespace WebAPI.App_Start
{
    public class AutofacWebapiConfig
    {

        public static IContainer Container;

        public static void Initialize(HttpConfiguration config)
        {
            Initialize(config, RegisterServices(new ContainerBuilder()));
        }

        public static void Initialize(HttpConfiguration config, IContainer container)
        {
            config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
        }

        private static IContainer RegisterServices(ContainerBuilder builder)
        {
            //Register your Web API controllers.  
            //builder.RegisterApiControllers(Assembly.GetExecutingAssembly());

            builder.RegisterAssemblyTypes(Assembly.Load(nameof(Coordination)))
              .Where(t => t.Namespace.Contains("Services"))
              .As(t => t.GetInterfaces().FirstOrDefault(i => i.Name == "I" + t.Name));

            //Set the dependency resolver to be Autofac.  
            Container = builder.Build();

            return Container;
        }

    }
}

我这里的问题是缺少 AutofacWebApiDependencyResolver。

这是我放置代码以调用 AutofacWebapiConfig class

的地方
namespace CB.WebAPI
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services

            //Dependency Injection
            //Configure AutoFac  
            AutofacWebapiConfig.Initialize(GlobalConfiguration.Configuration);

            // Web API routes
            ...
        }
    }
}

这是一个全新的 Web api 核心,带有 3 个 class 库,采用 n 层架构。任何帮助,将不胜感激。是否在正确的位置调用它,我是否需要创建第三个 class.

我还在我的 app_start 文件夹中添加了一个 classed Bootstrapper,我修改了 Global.asax 以添加一行 Bootstrapper.Run();

在评论中,您曾说过 AutofacWebApiDependencyResolver 属于 (Autofac.Integration.WebApi) 的命名空间在您尝试为其添加 using 指令时不存在。

您的项目似乎没有安装 Autofac.Webapi2 NuGet 包。

使用Visual Studio安装:

  1. Select 工具 | NuGet 包管理器 |管理解决方案的 NuGet 包...
  2. 单击“浏览”选项卡
  3. 键入 Autofac.Webapi2 并点击 enter/return
  4. 单击列表中的 Autofac.WebApi2
  5. Select右侧要安装的项目
  6. 点击安装
  7. 确定所有出现的许可协议(假设您同意)。

或者,在 Visual Studio 2019 年,您可以使用以下简单程序安装它:

  1. 点击AutofacWebApiDependencyResolver
  2. Ctrl+.
  3. Select "Install package 'Autofac.WebApi2'"
  4. 点击"Find and install latest version"