Na Startupclasse, eu posso adicionar serviços no ConfigureServicesmétodo. Quando eu quiser obter um determinado serviço, existem 2 propriedades em instância HttpContext, ApplicationServicese RequestServices. Gostaria de saber a diferença entre eles e como usá-los corretamente.
Edit # 1: Por exemplo, na classe de inicialização:
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<ICache, InProcessCache>(); // Line 1
services.AddSingleton<ISystemClientResolver>(SystemClientResolver.CreateInstance); // Line 2
services.AddScoped<SystemClient>(); // Line 3
services.AddRvcBusiness(); // Line 4
services.AddMvc(); // Line 5
}
Se eu não chamo app.UseRequestServices()no Configure(IApplicationBuilder app)método, posso obter SystemClientinstância por Context.ApplicationServices.GetService(typeof(SystemClient)), mas não é base por pedido, parece Singleton e Context.RequestServicesé nulo. Uma vez que eu chamo app.UseRequestServices()assim:
public void Configure(IApplicationBuilder app)
{
app.UseRequestServices();
// ...
}
Context.RequestServicesnão é nulo e posso obter SystemClientexemplo, por Context.RequestServices.GetService(typeof(SystemClient))e a instância é base por solicitação.













