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 ConfigureServices
en Startup.cs
.
services.AddDistributedMemoryCache();
services.AddSession();
Configure
en 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