AutofacWebApiDependencyResolver方法不存在

问题描述 投票:0回答:1

我正在按照本教程Youtube DI进行依赖项注入。对于我来说,这很清楚,但是没有显示如何使用n层体系结构在Web API上实现。我还包括了本教程之后的内容: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类的位置

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类库,采用n层架构。任何帮助,将不胜感激。是否在正确的位置调用它,我需要创建第三类吗?

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

c# dependency-injection autofac autofac-configuration
1个回答
1
投票

在注释中,您说过尝试为它添加using指令时,名称空间AutofacWebApiDependencyResolver不属于(Autofac.Integration.WebApi)。

看来您的项目没有安装Autofac.Webapi2 NuGet软件包。

使用Visual Studio安装它:

  1. 选择工具| NuGet软件包管理器|管理NuGet软件包以获取解决方案...
  2. 单击浏览选项卡
  3. 键入Autofac.Webapi2并按Enter /返回
  4. 从列表中单击Autofac.WebApi2
  5. 选择要安装到右侧的项目
  6. 单击安装
  7. 确定出现的所有许可协议(假设您同意)。>>
  8. 或者,在Visual Studio 2019中,您可以通过以下简单过程安装它:

  1. 单击AutofacWebApiDependencyResolver
  2. Ctrl
  3. +
  4. 选择“安装程序包'Autofac.WebApi2'”
  5. 单击“查找并安装最新版本”
  6. enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.