在ASP.NET Core 2.x中,一个请求将被处理为应用程序级别的单例创建,而不是每个请求创建一个新的范围。这可以通过添加以下行来实现:
services.AddMvc().AddControllersAsServices();
这会在MVC框架中将控制器注册为服务,这意味着它们会在每个请求中被解析为新的范围。在上面的示例中,AddControllersAsServices()方法告诉MVC框架将控制器注册为服务,而不是在应用程序启动时解析它们。
例如,在Startup.cs文件中,可以在ConfigureServices()方法中添加以下行:
public void ConfigureServices(IServiceCollection services) { services.AddMvc().AddControllersAsServices(); }
这将使所有控制器成为范围服务,从而使每个请求都有新的范围。
另外,如果您使用的是ASP.NET Core的默认控制器解析方式,则可以通过将控制器注册为范围服务来覆盖此行为。例如,以下是如何在Startup.cs文件中将控制器注册为范围服务:
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped
在上面的示例中,AddScoped()方法将HomeController和AccountController注册为范围服务。这意味着每个请求都会获取新的HomeController和AccountController实例。
总之,无论您采取哪种方法,确保您使用的是适当的范围解析,否则您的应用程序可能会出现意外的行为或性能问题。