Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.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# 在ASP.NET MVC中使用ASP.NET核心IServiceCollection_C#_Asp.net Mvc_Asp.net Core - Fatal编程技术网

C# 在ASP.NET MVC中使用ASP.NET核心IServiceCollection

C# 在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) 您能告诉我

我正在尝试使用ASP.NET Core 2.2
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));