2016-08-23 82 views
0

我的WebForms项目出现问题,会话ID在每个请求中都会更新。这个问题在我的标准IIS上不会发生,所以我认为这是我的开发设置中的一个本地问题。Visual Studio 2015和IIS Express对每个请求续订会话ID

为了测试,我简单地创建一个.aspx页面用下面的代码:

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

如前所述,当我刷新本地此页,在运行Visual Studio 2015和IIS Express中,我得到一个新的会话ID与每个请求。 (调试,检查会话内容以及不会产生相同的结果。)

这是怎么回事?

(我见过的浏览器链接功能可能会导致类似问题的索赔。我不明白怎么会是,但仍然尝试禁用它,重新启动Visual Studio和诸如此类的东西,但无济于事。)

回答

0

这次我会回答我自己的问题:

当进一步检查为什么会话cookie没有“粘住”,检查响应头时,我突然意识到由于某种原因,服务器试图设置会话cookie作为“安全”:

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表达10和vs2017 –