C# 在ASP.NET MVC中使用ASP.NET核心IServiceCollection
我正在尝试使用ASP.NET Core 2.2C# 在ASP.NET MVC中使用ASP.NET核心IServiceCollection,c#,asp.net-mvc,asp.net-core,C#,Asp.net Mvc,Asp.net Core,我正在尝试使用ASP.NET Core 2.2IServiceCollection将依赖项注入构建到ASP.NET MVC(在完整的.NET Framework 4.7上)应用程序中。原因是我有一个使用ASP.NET核心构建的api项目,并且使用实体框架核心,所以我希望web应用程序(mvc)和api(Core)都使用相同的框架(EF Core) 我现在遇到的问题是,AddScoped似乎在工作,就像我使用了Singleton(即每次我发出web请求时都使用相同的dbcontext) 您能告诉我
IServiceCollection
将依赖项注入构建到ASP.NET MVC(在完整的.NET Framework 4.7上)应用程序中。原因是我有一个使用ASP.NET核心构建的api项目,并且使用实体框架核心,所以我希望web应用程序(mvc)和api(Core)都使用相同的框架(EF Core)
我现在遇到的问题是,AddScoped
似乎在工作,就像我使用了Singleton
(即每次我发出web请求时都使用相同的dbcontext
)
您能告诉我如何告诉IServiceCollection使用基于ASP.NET MVC的请求作用域而不是.NET Core作用域吗?使用每个请求的自定义作用域解决:
protected void Application_BeginRequest(object sender, EventArgs e)
{
Context.Items.Add("serviceScope", Startup.Provider.CreateScope());
}
protected void Application_EndRequest(object sender, EventArgs e)
{
var serviceScope = Context.Items["serviceScope"] as IServiceScope;
serviceScope?.Dispose();
}
及
使用每个请求的自定义范围解决:
protected void Application_BeginRequest(object sender, EventArgs e)
{
Context.Items.Add("serviceScope", Startup.Provider.CreateScope());
}
protected void Application_EndRequest(object sender, EventArgs e)
{
var serviceScope = Context.Items["serviceScope"] as IServiceScope;
serviceScope?.Dispose();
}
及
Provider = services.BuildServiceProvider();
DependencyResolver.SetResolver(new DotNetCoreDependencyResolver(Provider, DependencyResolver.Current));