2016-08-23 1 views
0

У меня возникла проблема с моим проектом WebForms, что идентификатор сеанса обновляется по каждому запросу. Эта проблема не возникает в моем стандартном IIS, поэтому я пришел к выводу, что это локальная проблема с моей настройкой разработки.Visual Studio 2015 и IIS Express обновляют идентификатор сеанса при каждом запросе

Для тестирования я просто создал страницу .aspx с помощью следующего кода:

<%: HttpContext.Current.Session.SessionID %> 

Как указывалось выше, когда я обновите эту страницу локально, под управлением Visual Studio 2015 и IIS Express, я получаю новый идентификатор сессии с каждым запросом. (Отладка, проверка содержимого сеанса и многое другое дают тот же результат.)

Что вы думаете об этом?

(я видел утверждения, что функция ссылки браузера может вызвать аналогичные проблемы. Я не понимаю, как это могло быть, но все же попытался его отключить, перезапустить Visual Studio и этажерку, но безрезультатно.)

ответ

0

Я буду отвечать на мой собственный вопрос этот раз:

При дальнейшем рассмотрении, почему куки сессии не «пряника», проверяя заголовки ответа, я вдруг понял, что по какой-то причине сервер пытается установить куки сессии как «безопасный»:

Set-Cookie:ASP.NET_SessionId=lgkbje1igeprk3u53dsfbvtg; path=/; secure; HttpOnly 

Хотя это совсем не плохая вещь, в моей настройке разработки это было неожиданно. Я не запускал запрос по https, поэтому, следовательно, cookie сеанса был удален.

Виновником в этом случае должен был быть найден в web.config, где я имел:

<httpCookies httpOnlyCookies="true" requireSSL="true" /> 

Это все немного неловко, но я думал, что это может быть полезным для кого-то в будущем , осознание того, что наблюдаемое поведение (новый сеанс с каждым запросом) может исходить от попытки установить cookie сеанса как «безопасного» без безопасного соединения, то есть https.

0

решен добавление этих значений к web.config

<sessionState cookieless="UseCookies" cookieName="AppNameSession"></sessionState> 
+0

IIS Express 10 и vs2017 –

Смежные вопросы