一切都是单例——请求不会创建新的范围(ASP.NET Core 2.x inside .NET Framework)

Everything is a singleton--requests aren't creating new scopes (ASP.NET Core 2.x inside .NET Framework)

我们正在将广泛的 Web 表单应用程序迁移到 .NET 5+/.NET Core 世界。我们已将大部分后端库代码移至 .NET Standard 2.0。

作为逐步转移功能的临时步骤,我们设置了一个在 .NET Framework webforms 应用程序中运行的 ASP.NET Core 2.2(在 .NET Standard 2.0 上运行的最后一个版本)项目。除了我们遇到的一个致命缺陷外,这工作得很好:所有东西都是相同的作用域,因此作用域对象被视为单例。除其他问题外,这意味着应用程序会锁定它看到的第一个登录用户。不过,瞬态工作正常。

我正在使用 this library 在应用程序的 ASP.NET 核心部分中正确路由——如果没有它,一切都会返回 404。但我不确定库是否是罪魁祸首或其他一些网络表单怪癖。

我应该在 ASP.NET Core 2.2 管道的哪个位置查看每个 HTTP 请求应该创建自己的 IServiceProvider 范围以修复此问题或手动执行此操作?

我要找的区域原来是 RequestServicesContainerMiddleware,它为每个请求生成一个新的范围。检查是否 IServiceProvidersFeature is already set. The library I'm using defines this up front.

现在的solution/workaround是我在RequestServicesContainerMiddleware的简化版本中添加了总是创建一个新的服务范围。

对如何修改DI系统帮助很大。)