Как реализовать общий сеанс In-proc в ядре .net Для балансировки нагрузки - PullRequest
0 голосов
/ 12 сентября 2018

Я сталкиваюсь с проблемой истечения сеанса, когда балансировщик нагрузки переключает сервер моего приложения.

Я хочу разделить сессию между двумя серверами через балансировщик нагрузки в Asp.net Core. Может ли кто-нибудь подсказать мне, как реализовать сессию inproc?

Спасибо.

1 Ответ

0 голосов
/ 12 сентября 2018

Сессия InProc вам не поможет, поскольку она находится только на веб-сервере. Если вы переключаете серверы из-за балансировки нагрузки или при сбое, вы теряете сеанс. То, что вы ищете, это IDistributedCache. Примеры использования Redis или SQL можно найти в документах (Серьезно, прочитайте их. Они потрясающие!)

Если вы хотите использовать Redis, вам нужно сначала установить пакет для него

Install-Package Microsoft.Extensions.Caching.Redis

После этого настройте его на свой ConfigureServices метод:

public void ConfigureServices(IServiceCollection services)
{
    services.AddDistributedRedisCache(options =>
    {
        options.Configuration = "localhost";
        options.InstanceName = "SampleInstance";
    });
}

Затем добавьте .UseSession к вашему Configure методу:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    /*... omitted ...*/
    app.UseCookiePolicy();
    app.UseSession();
    app.UseHttpContextItemsMiddleware();
    app.UseMvc();
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...