我有一个非常奇怪的问题,我正在寻找任何建议。我有一个运行IIS 6的ASP.NET网站,它在大多数情况下运行良好。然而,会议似乎被随机清除?所以,如果我登录...点击,我会随机启动。有时它是在30秒/ 4次点击后。有时它是第一次点击,有时它甚至不会让我登录...有时它工作正常? (我知道它被清除的原因是因为我在注销时打印会话,并且它们是空的)
我看了一下IIS日志,但他们没有告诉我太多。我怀疑这可能是一个时区问题?,我想知道是否有人知道这是否可能?
除此之外,有关如何了解会议中发生的事情的任何提示?
到目前为止,关于我的问题最奇怪的部分是它的随机性。这可能是IIS / ASP.NET专家的一个很好的线索。 (至少我希望如此!)
另一个线索:当我在本地托管它时,该网站工作得很完美,而当我将其托管在我的虚拟godaddy服务器上时,我才会遇到问题。 (运行IIS 6)
我注意到的另一件事
在本地主机上我的cookie看起来像这样:(来自firebug) Cookie ASP.NET_SessionId = vgt4ly45frvsm1qsfjsmdcbc;用户名=;演示=真
托管服务器上的就是这样: Cookie ASP.NET_SessionId = vgt4ly45frvsm1qsfjsmdcbc;
“username”是我的会话的名称...也许我在共享主机上禁用了cookie,这导致会话无法正常工作?
谢谢你的时间, 安德鲁
答案 0 :(得分:1)
您的asp.net应用程序可能会被回收。如果达到内存或CPU阈值,或者在一段时间后(在IIS6上默认15分钟不活动),可能会发生回收。
当应用程序被回收时,内存中的所有内容都将丢失。这可能是您丢失会话数据的原因。
要确保回收是罪魁祸首,您可以查看服务器上的性能计数器,或者只在Application_Start global.asax处理程序中记录一些内容。
有关IIS6上的asp.net性能计数器列表,请选中https://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/0a6c9f07-a70c-4c3d-b93d-5dfef593c744.mspx?mfr=true
“应用程序重新启动”和“工作进程重新启动”的计数器是您应该查看的计数器。
答案 1 :(得分:0)
负载均衡群集中是否有多个Web服务器?当群集中的两个服务器之间的加密密钥不同时,我遇到了这个问题。每当负载平衡切换到另一台服务器时,.Net就无法解密cookie,因此认为它很糟糕,并将您送回登录页面。
Here's有关此问题的MSDN文章。
答案 2 :(得分:0)
回答我自己的问题:
此链接非常有用:
http://msdn.microsoft.com/en-us/library/ms972429.aspx
即这部分:
服务器场限制。当用户在Web服务器场中从服务器移动到服务器时,其会话状态不会跟随它们。 ASP会话状态是特定于机器的。每个ASP服务器都提供自己的会话状态,除非用户返回到同一服务器,否则会话状态不可访问。虽然网络IP级路由解决方案可以解决此类问题,但通过确保将客户端IP路由到原始服务器,某些ISP选择为其客户端使用代理负载平衡解决方案。其中最臭名昭着的是美国在线。 AOL等解决方案阻止了对服务器的请求的网络级路由,因为请求者的IP地址不能保证是唯一的。
我将登录/注销会话切换为纯粹基于cookie(我需要的所有解决方案)...为了更安全的实现,我认为ASP.NET内置了Profile ...以及... ASP存储在您的数据库中的.NET会话...我当时不喜欢研究/恭维。
安德鲁