Я использую внедрение зависимостей для доступа к информации, которая находится в сеансе моего приложения, через класс (компонент), но при выполнении доступа возникает ошибка: «В System произошло исключение типа« System.InvalidOperationException ».Private.CoreLib.dll, но не был обработан в коде пользователя: 'Сеанс не настроен для этого приложения или запроса.' '
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
.AddSessionStateTempDataProvider();
//Adiciona uma implementação padrão na memória do IDistributedCache.
services.AddDistributedMemoryCache();
//Session
services.AddSession(options =>
{
//Set a short timeout for easy testing.
options.IdleTimeout = TimeSpan.FromMinutes(60);
options.Cookie.HttpOnly = true;
//Make the session cookie essential
options.Cookie.IsEssential = true;
});
services.AddHttpContextAccessor();
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => false;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
//Adicionar os filtros nos controllers
services.AddMvc(options =>
{
options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute());
//adicionado por instância
options.Filters.Add(new CustomActionFilter());
options.Filters.Add(new CustomAsyncActionFilter());
//adicionado por tipo
options.Filters.Add(typeof(CustomActionFilter));
options.Filters.Add(typeof(CustomAsyncActionFilter));
});
//Injeção de Dependência
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
services.AddSingleton<Common.AtualizarFiltros.IRefreshPF, Common.AtualizarFiltros.RefreshPF>();
}
MyController.cs
public class PessoaFisicaController : Controller
{
private readonly IRefreshPF _refreshPF;
public PessoaFisicaController(IRefreshPF refreshPF)
{
_refreshPF = refreshPF;
}
public IActionResult Index()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public async void AddOrRemoveSexo([FromBody] Models.Json.JsonJsonAddOrRemoveSexo jsonInput)
{
await _refreshPF.AddOrRemoveSexoAsync(jsonInput);
}
}
MyClass.cs
public interface IRefreshPF
{
Task AddOrRemoveSexoAsync(Models.Json.JsonJsonAddOrRemoveSexo jsonInput);
}
public class RefreshPF : IRefreshPF
{
private readonly IHttpContextAccessor _context;
public RefreshPF(IHttpContextAccessor context)
{
_context = context;
}
public async Task AddOrRemoveSexoAsync(Models.Json.JsonJsonAddOrRemoveSexo jsonInput)
{
int idSexo = 0;
//Modelos
Model.SqlServer.Segmentacao.Sexo sexo = new Model.SqlServer.Segmentacao.Sexo();
Models.Session.SessionResumoContagem sessionResumoContagem = new Models.Session.SessionResumoContagem();
string[] array = jsonInput.id.Split('_');
idSexo = int.Parse(array[1]);
sexo = await Service.Filtros.GetByIdSexoAsync(idSexo);
sessionResumoContagem = _context.HttpContext.Session.Get<Models.Session.SessionResumoContagem>("ResumoContagem");
if (sessionResumoContagem == null)
{
sessionResumoContagem = new Models.Session.SessionResumoContagem();
sessionResumoContagem.tipoPessoa = (int)Model.Enumeradores.TipoPessoa.PessoaFisica;
_context.HttpContext.Session.Set<Models.Session.SessionResumoContagem>("ResumoContagem", sessionResumoContagem);
}
if (sessionResumoContagem.sexos == null)
{
sessionResumoContagem.sexos = new List<Model.SqlServer.Segmentacao.Sexo>();
}
}
}
Ошибка в sessionResumoContagem = _context.HttpContext.Session.Get ("ResumoContagem");
Может кто-нибудь помочь?