Значение сеанса не сохранено или не работает в dotnetcore webapi - PullRequest
0 голосов
/ 14 ноября 2018

Ниже приведен мой код из файла startup.cs,

public void ConfigureServices(IServiceCollection services){  
    services.AddMvc().AddJsonOptions(options =>{
        options.SerializerSettings.ContractResolver = new DefaultContractResolver();
    });

    services.AddDistributedMemoryCache();

    services.AddSession(options => {
        // Set a short timeout for easy testing.
        options.IdleTimeout = TimeSpan.FromSeconds(36000);
        options.Cookie.HttpOnly = true;
    });

    services.AddCors(options => {
        options.AddPolicy("CorsPolicy",
        builder => builder.AllowAnyOrigin()
        .AllowAnyMethod()
        .AllowAnyHeader()
        .AllowCredentials());
    });
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env{
    if (env.IsDevelopment()){
        app.UseDeveloperExceptionPage();
    }

    app.UseStaticFiles();

    //app.UseCors("CorsPolicy");
    // global cors policy
    app.UseCors(x => x
    .AllowAnyOrigin()
    .AllowAnyMethod()
    .AllowAnyHeader()
    .AllowCredentials());

    app.UseSession();
    app.UseAuthentication();
    app.UseMvc();
}

Ниже приведен код для установки и получения идентификатора пользователя в сеансе:

HttpContext.Session.SetInt32("UserId", user.Id);
int userId = (int)HttpContext.Session.GetInt32("UserId");

При чтении сеанса я получаю исключение нижев действии, отличном от действия, в котором оно установлено.Любая причина, почему сессия не работает?

1 Ответ

0 голосов
/ 16 ноября 2018

Это решение работает только для dotnetcore 2.1 или выше.Мое решение было dotnetcore 2.0

...