对此的任何建议都会非常感激,我整个上午一直在研究,我仍然在摸不着头脑。几个星期前我在一家新公司开始,我是唯一的.NET开发人员,因为开发最初是由一家外包公司完成的,我被要求进行研究。 我对现有系统的了解非常有限,但从我能收集的情况来看,情况如下。
我们希望在asp.net网站上启用粘性会话。从我收集的研究中,我需要做以下步骤。我们正在使用ASP.NET状态服务
该设置是一个负载平衡服务器,为两个Web服务器提供服务。
我缺乏的知识是会话存储在哪里。会话是否存储在负载均衡器上,是否可以存储在负载均衡器上?从我所看到的,它们由ASP.NET状态服务存储,如果服务在负载均衡器上运行,那么会话就存储在负载均衡器中。
根据我的理解,ASP.NET状态服务在每个Web服务器上运行,它们只是相互通信,以便会话存储在两个服务器上。我假设他们这样做的方式是基于所使用的算法类型。任何信息将不胜感激。
答案 0 :(得分:6)
zeencat,在状态服务器模式部分查看http://msdn.microsoft.com/en-us/library/ms178586.aspx:
StateServer模式将进程中的会话状态(称为ASP.NET状态服务)存储在ASP.NET辅助进程或IIS应用程序池中单独。 使用此模式可确保在重新启动Web应用程序时保留会话状态,并使会话状态可供Web场中的多个Web服务器使用。 要使用StateServer模式,必须首先确保ASP.NET状态服务在用于会话存储的服务器上运行。安装ASP.NET和.NET Framework时,ASP.NET状态服务作为服务安装。
根据我的理解,ASP.Net状态服务在一台服务器上运行,作为一种名为 ASP.NET状态服务的服务,两台服务器将具有相同的web.config文件:
<configuration>
<system.web>
<sessionState mode="StateServer"
stateConnectionString="tcpip=SampleStateServer:42424"
cookieless="false"
timeout="20"/>
</system.web>
</configuration>
这样,会话就存储在托管服务的服务器上。
希望它有所帮助, []
答案 1 :(得分:1)
如果您在AWS或Redis中,如果您在本地作为ASP.NET会话存储而不是使用粘性会话,请查看使用ElastiCache。它在自动缩放,负载平衡方面具有更多优势,我会说性能。有关详情,请访问http://blogs.msdn.com/b/webdev/archive/2014/05/12/announcing-asp-net-session-state-provider-for-redis-preview-release.aspx