Estoy tratando de usar la capacidad de sesión en ASP.NET Core Web API (.NET Core 3.1). Como prueba, configuré mi proyecto de la siguiente manera.
Instale el paquete NuGet Microsoft.AspNetCore.Session.
Agregue métodos de servicio ConfigureServicesen Startup.cs.
services.AddDistributedMemoryCache();
services.AddSession();
Configureen Startup.cs:public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseSession();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints => { endpoints.MapControllers(); });
}
HttpContext.Session.SetString("currentUser", "value1");
Sin embargo, sigo recibiendo este error.
{"type":"NullReferenceException","message":"Referencia de objeto no establecida en una instancia de un objeto.","stackTrace":" en Api.Routes.MainRoute.Handler(registrador ILogger`1) en MainRoute.cs:línea 16\n en Api.Controllers.MainController.MainRoute(autorización de cadena) en MainController.cs:línea 264"}
¿Como puedo solucionar este problema?
Solución del problema
El orden del middleware es importante. Llame a UseSession después de UseRouting y antes de MapRazorPages y MapDefaultControllerRoute.
Gestión de sesiones y estados
Cambia tu código a este:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseSession();
app.UseAuthorization();
app.UseEndpoints(endpoints => { endpoints.MapControllers(); });
}
No hay comentarios:
Publicar un comentario