Qual é a diferença entre ApplicationServices e RequestServices em Microsoft.AspNet.Http.HttpContext?

votos
16

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.

Publicado 25/11/2014 em 09:01
fonte usuário
Em outras línguas...                            


1 respostas

votos
10

ApplicationServicessão para a vida do seu aplicativo, enquanto RequestServicessão escopo para um pedido especial ( HttpContext). Além disso, RequestServicespode ser nulo. Um middleware especial RequestContainer é o que inicializa RequestServices:

app.UseRequestServices()usará o resultado de ConfigureServicescomo RequestServices

app.UseServices() e seus sobrecargas permitem especificar / modificar os serviços de solicitação

Além disso, se você usar roteamento / ou qualquer middleware auth segurança, eles serão automaticamente assegurar RequestServices são preenchidos, bem como, uma vez que eles dependem de pedido escopo próprios serviços.

Respondeu 25/11/2014 em 23:26
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more