【问题标题】:AutofacWebApiDependencyResolver method doesnt existAutofacWebApiDependencyResolver 方法不存在
【发布时间】:2020-05-28 02:18:57
【问题描述】:

我正在关注本教程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 文件夹中添加了一个分类引导程序,并修改了 Global.asax 以添加一行 Bootstrapper.Run();

【问题讨论】:

  • 您似乎没有使用Autofac.Integration.WebApi namespace。假设您使用的是 Visual Studio,通常可以突出显示缺少的方法并按 Ctrl+。这将提示您添加缺少的using。在 VS2019 的情况下,如果 NuGet 包丢失,它甚至会经常建议安装。
  • 正确我有它,但我删除它,因为它不存在。
  • 它似乎是 Autofac.Webapi2 NuGet 包的一部分。
  • 谢谢,我安装的是 Autofac 而不是 Autofac.Webapi2

标签: c# dependency-injection autofac autofac-configuration


【解决方案1】:

在您所说的 cmets 中,当您尝试为其添加 using 指令时,名称空间 AutofacWebApiDependencyResolver 属于 (Autofac.Integration.WebApi) 不存在。

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

使用 Visual Studio 安装它:

  1. 选择工具 | NuGet 包管理器 |管理解决方案的 NuGet 包...
  2. 点击浏览标签
  3. 键入 Autofac.Webapi2 并按回车键
  4. 从列表中单击 Autofac.WebApi2
  5. 在右侧选择要安装的项目
  6. 点击安装
  7. 确定出现的任何许可协议(假设您同意)。

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

  1. 点击AutofacWebApiDependencyResolver
  2. Ctrl+.
  3. 选择“安装包'Autofac.WebApi2'”
  4. 点击“查找并安装最新版本”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-16
    • 2018-05-16
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多