Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 未找到具有-autofac的构造函数_C#_Asp.net Mvc_Autofac - Fatal编程技术网

C# 未找到具有-autofac的构造函数

C# 未找到具有-autofac的构造函数,c#,asp.net-mvc,autofac,C#,Asp.net Mvc,Autofac,我有以下自动传真配置: public static void RegisterDI() { var builder = GetBuilder(); var container = builder.Build(); DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); } public static ContainerBuilder GetBuilder() { var

我有以下自动传真配置:

public static void RegisterDI()
{
    var builder = GetBuilder();
    var container = builder.Build();

    DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
}
public static ContainerBuilder GetBuilder()
{
    var builder = new ContainerBuilder();
    builder.RegisterControllers(Assembly.GetCallingAssembly());
    builder.RegisterFilterProvider();

    var assemblies = BuildManager.GetReferencedAssemblies().Cast<Assembly>().Where(x => x.FullName.Contains("Soundyladder")).ToArray();

    builder.RegisterAssemblyTypes(assemblies)
        .Where(t => t.Name.EndsWith("Service"))
        .AsImplementedInterfaces()
        .InstancePerRequest();

    builder.RegisterAssemblyModules(assemblies);

    return builder;
}
以下是我在服务层的服务:

public UserService(IUserRepository userRepository)
{
    this._userRepository = userRepository;
}
这是我的控制器:

public UserController(IUserService userService)
{
    this._userService = userService;
}
每次启动应用程序时,都会出现以下错误:

找不到具有的构造函数 类型上的“Autofac.Core.Activators.Reflection.DefaultConstructorFinder” “Soundyladder.Service.Services.UserService”可以通过调用 可用服务和参数:无法解析参数 'Soundyladder.DataAccess.Repositories.IUserRepository userRepository' 构造函数的无效性 .ctor(Soundyladder.DataAccess.Repositories.IUserRepository)“”。 描述:在执行过程中发生未处理的异常 当前的web请求。请查看堆栈跟踪以了解更多信息 有关错误的信息及其在代码中的来源

异常详细信息:Autofac.Core.DependencyResolutionException:无 构造函数发现了 类型上的“Autofac.Core.Activators.Reflection.DefaultConstructorFinder” “Soundyladder.Service.Services.UserService”可以通过调用 可用服务和参数:无法解析参数 'Soundyladder.DataAccess.Repositories.IUserRepository userRepository' 构造函数的无效性 .ctor(Soundyladder.DataAccess.Repositories.IUserRepository)“”


我不知道为什么会这样。我在这个项目中的设置与我在其他项目中的设置相同。当我将我的其他项目与此进行比较时,我看不出任何区别。

看起来您只注册了“服务”后缀类型,而忘记了“存储库”后缀类型

.Where(t => t.Name.EndsWith("Service"))
(代表问题作者发布解决方案)

我更改了自动传真配置。现在它开始工作了:

    var builder = new ContainerBuilder();
    builder.RegisterControllers(Assembly.GetExecutingAssembly());
    builder.RegisterFilterProvider();

    var assemblies = BuildManager.GetReferencedAssemblies().Cast<Assembly>().Where(x => x.FullName.Contains("Soundyladder")).ToArray();
    builder.RegisterAssemblyTypes(assemblies)
        .AsImplementedInterfaces()
        .InstancePerRequest();

    return builder;
var builder=newcontainerbuilder();
RegisterController(Assembly.getExecutionGassembly());
builder.RegisterFilterProvider();
var assemblies=BuildManager.getReferencedAssemblys().Cast().Where(x=>x.FullName.Contains(“Soundyladder”).ToArray();
builder.RegisterAssemblyTypes(程序集)
.AsImplementedInterfaces()
.InstancePerRequest();
返回生成器;

它似乎希望您使用单个参数创建构造函数,即:
public UserRepository(IUserRepository repo){…}
@RonBeyer:在我的Repository类中?对“有人能帮我吗”的回答是“是”,但实际上这可能不是您想要问的问题。作为一名编辑,我倾向于删掉它——最好的问题类型是具体的,例如“为什么会在中出现”。这比请求“帮助”要负责任得多,因为“帮助”有点宽泛和未定义。但我在存储库层没有什么要解决的问题?但是
IUserService
依赖于
IUserRepository
,因此如果您试图解决IUserService,
DependencyResolver
将在使用所需的IUserService实例为您提供服务之前尝试解析所有依赖类。
    var builder = new ContainerBuilder();
    builder.RegisterControllers(Assembly.GetExecutingAssembly());
    builder.RegisterFilterProvider();

    var assemblies = BuildManager.GetReferencedAssemblies().Cast<Assembly>().Where(x => x.FullName.Contains("Soundyladder")).ToArray();
    builder.RegisterAssemblyTypes(assemblies)
        .AsImplementedInterfaces()
        .InstancePerRequest();

    return builder;