当我重新启动SQL服务器时为什么cookie会过期?

时间:2018-06-17 15:43:52

标签: sql-server iis cookies

我使用经典的asp设置了简单的Cookie,例如<%response.cookies("user")="A"%>。正如我在this Q/A中所读到的,这样的cookie只依赖于域名而不是其他内容。

我在服务器中停止并启动SQL服务器时已经测试过,登录的用户已经注销。我从2012年到2014年升级SQL服务器时也有同样的经验。(我不使用ASP session并且只设置cookie来识别用户。)

我的确切问题是哪些参数对Cookie生命周期有影响? IIS?应用程序池?域名? SQL SERVER? IP地址?如果它取决于这些因素,我应该如何创建一个仅依赖于URL地址的cookie?

2 个答案:

答案 0 :(得分:1)

在asp.net网络应用程序中,您可以在web.config文件中设置会话提供程序:

<sessionState 
            mode="SQLServer"
            sqlConnectionString="data source=127.0.0.1;user id=<username>;password=<strongpassword>"
            cookieless="false" 
            timeout="20" 
    />

检查是否未将其设置为使用tempdb。

除此之外,SQL服务器不能会影响您的cookie寿命,除非启动和停止sql-server会以某种方式清除运行sql-server的计算机上的cookie文件,会很奇怪。

您可能使用session-cookie,每次关闭浏览器时都会删除它们,在这种情况下,这只是一个巧合...

Cookie是一种客户端技术。
它们不依赖您服务器上的任何内容。
Cookies取决于浏览器支持的cookie(并已激活它们),http域(设置了路径和路径,以及设置了子域)。除此之外,可能还有纯HTTP cookie,会话cookie和普通cookie。

仅HTTP的cookie只能在服务器端读取或设置,客户端脚本无法读取。

由于您的回复是服务器端的,所以不可能。
因此,剩下的两个选项是会话cookie(当您关闭浏览器时)或cookie超时,它可以在cookie中或在具有表单身份验证的web.config文件中设置:

<authentication mode="Forms">
  <forms loginUrl="~/Account/Login" timeout="40320" />
</authentication>

答案 1 :(得分:0)

您可以查看以下内容:https://stackoverflow.com/a/3855874/11442461。 我不确定,但是Machine Key应该会影响Cookie,并且可能取决于SQL Server的安装。