![为什么我的 iis 7.5 在经典 asp 中创建多个 ASPSESSIONID cookie?](https://linux22.com/image/626094/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E7%9A%84%20iis%207.5%20%E5%9C%A8%E7%BB%8F%E5%85%B8%20asp%20%E4%B8%AD%E5%88%9B%E5%BB%BA%E5%A4%9A%E4%B8%AA%20ASPSESSIONID%20cookie%EF%BC%9F.png)
我有 Windows Home Server 2011 SP1 64 位。它运行的是 IIS 7.5,上面有一个经典的 asp 应用程序。我时不时会遇到每个客户端速度变慢的情况。我的意思是,一个特定的浏览器会表现得好像找不到服务器一样。同一台机器上的其他浏览器都很好,网络上的其他机器也很好。
我安装了 IIS7.5,然后添加了我的经典 asp 应用程序。我将应用程序池配置为允许 com 进行 32 位访问,并将 IIS 配置为向我发送实际错误。我设置了常见的 http 标头 - “http keep alive” 和“expire web content promptly”,看看它们是否有帮助(没有)。这就是我所做的所有更改。
该应用程序没有数据库。它不使用集成身份验证。它不与 dotnet 互操作。它没有做任何聪明或复杂的事情。如果我将问题简化为设置 cookie 的页面,而没有其他内容,一段时间后问题仍然会出现。
发生这种情况时,检查浏览器,总会有多个 ASPSESSIONID cookie(例如超过 30 个)。它们看起来像这样:
Cookie:ASPSESSIONIDSCRQTCBT=JCFJPAHDDFOOBJCDHCIPHDCH; ASPSESSIONIDCQQSTQAC=MAJHOOJCFEDLCLPNALLILMCL; ASPSESSIONIDAQTTRQBD=OGIPPIFDHODGGANGGPPJFJGI; ASPSESSIONIDQCCQCRBC=IINDIKMBMNABDJKMCKMFMFOF; __utma=104959943.97773051.1372652641.1372652641.1372652641.1; __utmc=104959943; ASPSESSIONIDSQDRCSCQ=JHCNKOADBNKDMCLKFFCCINJD; ASPSESSIONIDQSQQDDSQ=OLFFMCCDBBNCLDKEFEAEIONM; ASPSESSIONIDSSSBTCCD=NBLNLHMBEOANIGDHHLFHNENH; ASPSESSIONIDACQRATQT=DKJNFHODFIDJJBFEFMBEBBLB; ASPSESSIONIDQSSSRTDD=ICCNACFCIPMAHJEPHDJBNMPA; ASPSESSIONIDASDBABDS=PANLJLOCMFAFGHEEEGAPJNPM; ASPSESSIONIDASAACACS=PIDJNIPCLOJCKINLBLCBPJED;
ETC ..
最终,我设置的几个实际 cookie 也让我感到十分沮丧。我没有使用这个 ASPSESSIONID - 它是用来做什么的?我可以删除它吗?它可能是导致我速度变慢的原因吗?
答案1
ASPSession cookie 不太可能与您的问题有任何关系。
如果您在 ASP 站点内不使用会话状态,则可以在 IIS 中将其关闭。
在 IIS 管理器中,选择您的站点并单击底部的 ASP 图标,展开Session Properties
并设置Enable Session State
为错误的,您将不再拥有该 cookie。
为什么有两个?经典的 ASP 引擎在为用户创建会话时会设置一个 cookie,如果由于某种原因丢失了该会话(例如 AppPool 被回收),它会为新会话设置一个新的 cookie。浏览器会保留旧的 cookie,因为它不知道它对服务器不再有效。
答案2
我也遇到过这个问题。我认为域 cookie 的最大大小是 4k,所以我遇到的一些奇怪行为实际上是由于 4k 空间被虚假的 ASPSESSIONID cookie 数据填充所致。
Anton 的 javascript 解决方案为我解决了这个问题:https://stackoverflow.com/questions/12783878/classic-asp-multiple-aspsessionid-in-cookies