我有一个ASP。NET核心MVC应用程序,它使用实体框架核心O/RM。我正在应用程序中实现通用存储库模式。有两个实体,Employee
IGENERICRepository.cs-
public interface IGenericRepository<TEntity> where TEntity : class
{
//...
}
GenericRepository.cs-这里员工部门详细信息
是我的上下文类,它继承了DBContext
类-
public class GenericRepository<TEntity> :IGenericRepository<TEntity> where TEntity : class
{
DbSet<TEntity> _dbSet;
// Dependency Injection
private readonly EmployeeDepartmentDetail _employeeDepartmentDetail;
public GenericRepository(EmployeeDepartmentDetail employeeDepartmentDetail)
{
_employeeDepartmentDetail = employeeDepartmentDetail;
_dbSet = _employeeDepartmentDetail.Set<TEntity>();
}
//...
}
Program.cs-
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run(); // I am getting those two exceptions here
}
创业。cs-
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddScoped(typeof(IGenericRepository<Type>), typeof(GenericRepository<Type>));
}
雇员控制员。cs-
public class EmployeeController : Controller
{
private readonly IGenericRepository<Employee> _genericRepository;
public EmployeeController(IGenericRepository<Employee> genericRepository)
{
_genericRepository = genericRepository;
}
//...
}
当我运行我的应用程序时,我遇到了两个异常-
系统AggregateException HResult=0x80131500 Message=无法构造某些服务(验证服务描述符的服务类型时出错:InfrastructureLayer.GenericRepository.Interface.IGenericRepository1[System.Type]生存期:作用域实现类型:InfrastructureLayer。一般记述。实施GenericRepository
1[System.Type]:适合“InfrastructureLayer”类型的构造函数。一般记述。实施找不到GenericRepository1[System.Type]”。确保类型是具体的,并且为公共构造函数的所有参数注册了服务。)来源=微软。扩展。DependencyTrace:在微软。扩展。依赖性注射。服务提供商。。微软的ctor(IEnumerable
1服务描述符、服务提供者选项)。扩展。依赖性注射。ServiceCollectionContainerBuilderExtensions。微软的BuildServiceProvider(IServiceCollection服务,ServiceProviderOptions选项)。扩展。依赖性注射。DefaultServiceProviderFactory。微软的CreateServiceProvider(IServiceCollection containerBuilder)。扩展。群众或部队的集合。内部的ServiceFactoryAdapter`1。微软的CreateServiceProvider(Object containerBuilder)。扩展。群众或部队的集合。房东。Microsoft的CreateServiceProvider()。扩展。群众或部队的集合。房东。CrudEfCore上的Build()。程序C:\Users\singh\Desktop\MVC\GenericRepository\CrudEfCore\Program中的Main(字符串[]args)。cs:16行这个异常最初是在这个调用堆栈中抛出的:[外部代码]
内部异常1:InvalidOperationException:验证服务描述符的ServiceType:InfrastructureLayer时出错。一般记述。界面IGenericRepository1[System.Type]生存期:作用域实现类型:InfrastructureLayer。一般记述。实施GenericRepository
1[System.Type]:适合“InfrastructureLayer”类型的构造函数。一般记述。实施找不到GenericRepository“1[System.Type]”。确保类型是具体的,并且为公共构造函数的所有参数注册了服务。
内部异常2:InvalidOperationException:类型“InfrastructureLayer”的合适构造函数。一般记述。实施找不到GenericRepository“1[System.Type]”。确保类型是具体的,并且为公共构造函数的所有参数注册了服务。
我无法理解例外,我不知道我在这里做错了什么。我知道我已经粘贴了很多代码,但我甚至不知道如何解释异常。
这就是问题的原因
services.AddScoped(typeof(IGenericRepository<Type>), typeof(GenericRepository<Type>));
Type
是一个抽象类,如错误消息所述:
确保类型是具体的,并且为公共构造函数的所有参数注册了服务。
注:我的
NextType
不是注册泛型服务时应该使用的泛型参数
在这种情况下,可以使用(泛型)开放类型注册,无需注册每个(泛型)构造的类型:
services.AddScoped(typeof(IGenericRepository<>), typeof(GenericRepository<>));
ASP. NET Core中的引用依赖注入
我刚起步 (更新:解决方案是将UseRouting移动到/api/error路由下) 但是当时,永远不会调用错误控制器方法。
我创建了一个API应用程序,没有完整的MVC模板。但是,带有正文的POST请求总是由于内部服务器错误而失败。 可能是什么原因造成的?
在Asp。Net Core 3.1应用程序我有以下关于应用程序设置的部分: 我试图获取一些值,比如Facebook的Id,所以我尝试: 但这行不通。。。我怎样才能得到这些值?
我不确定我是否完全正确地处理了这个问题。 背景:我有一个控制器动作GET foo()作为例子。这个foo()需要调用bar(),bar()可能需要很长时间。所以,我需要foo()在bar()完成之前(或无论何时)用“确定”来响应。 稍微复杂一点的是,bar()需要访问DBContext并从数据库中获取一些数据。在我当前的实现中,当我试图通过bar访问数据库时,会出现“DBContext Syste
与SqlAlchemy一起使用的异常。 基本异常类是 SQLAlchemyError . 由于DBAPI异常而引发的异常都是 DBAPIError . exception sqlalchemy.exc.AmbiguousForeignKeysError(*arg, **kw)¶ 在联接期间两个可选择项之间可以找到多个外键匹配时引发。 exception sqlalchemy.exc.Argumen
我正在实现确认电子邮件功能。我正在向用户发送一封帐户激活电子邮件,电子邮件中有激活链接。我正在尝试,当用户单击电子邮件中的链接时,它会将用户重定向到我的方法ConfirmEmail之一,该方法采用两个参数user,即加密的电子邮件和代码。当我单击调试器设置为该ConfirmEmail方法的链接时,它不会出现在那里。 确认电子邮件方式: 电子邮件中的链接如下所示: https://localhost