我有一个多层体系结构的c#项目,我不想在Presentation中添加Reference to My DAL层,所以我需要在运行时注入ApplicationDbContext以用于Identity,对于这种方法,我在Business层中编写了一个扩展方法为了这。 (表示层引用了业务层)并在startup.cs中添加了此方法,如下所示:
public static IdentityBuilder AddDbContext(this IdentityBuilder builder, IServiceCollection services, string connStr)
{
services.AddTransient<ApplicationDbContext>(_ => new ApplicationDbContext(connStr));
builder.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
return builder;
}
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddDbContext(services, Configuration.GetConnectionString("DefaultConnection"));
services.AddMvc();
// Add application services.
services.AddTransient<IEmailSender, AuthMessageSender>();
services.AddTransient<ISmsSender, AuthMessageSender>();
}
但是当我运行我的应用程序时,它在尝试运行时崩溃。
错误页面如下:
答案 0 :(得分:0)
我找到了问题, 实际上问题不是因为DI,而是因为我没有将我的Domian项目的使用指令添加到_ViewImports。