У меня есть 2 приложения ASP.Net Core 1.1. Приложение I размещается в IIS как узел веб-сайта. App2 размещается в App1 как виртуальное приложение.
Каждое приложение имеет свой собственный сеанс, созданный в файле startup.cs каждого. Кажется, проблема в том, что App1 удаляет сессию App2.
Итак, вот сценарий: я просматриваю App2 (виртуальное приложение). Затем я просматриваю App1. Когда я возвращаюсь в App2, сеанс был потерян или удален.
Если честно, я не совсем уверен, что происходит - и это кажется очень неожиданным поведением. Любые идеи или помощь будут приветствоваться.
Приложение 1:
public IServiceProvider ConfigureServices(IServiceCollection services)
{
services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromMinutes(20);
options.CookieName = ".App1";
});
}
Приложение 2:
public IServiceProvider ConfigureServices(IServiceCollection services)
{
services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromMinutes(20);
options.CookieName = ".App2";
});
}
Дополнительная информация:
Я только что заметил, что файл cookie, создаваемый обоими приложениями, называется «.AspNetCore.Session», который, по моему мнению, является именем по умолчанию. Однако, как ясно показано выше во фрагментах кода, я явно называю каждый cookie-файл сессии по-разному.
Так что, я думаю, реальный вопрос здесь заключается в том, почему мои приложения не создают свои собственные файлы cookie с явно заданными именами.
UPDATE:
Я думаю, что только что ответил на свой вопрос.
Далее на странице startup.cs в методе Configure появилось следующее:
app.UseSession(new SessionOptions()
{
CookieSecure = CookieSecurePolicy.Always,
CookieHttpOnly = true,
CookieName = ".App2" //added this
});
Если вы нажмете на него, я обнаружил, что есть варианты для CookieName. Кажется странным, что вы можете указать это в 2 местах. Но в любом случае, похоже, сейчас работает.