首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有多个服务器的Asp.net forms身份验证IIS7.5

具有多个服务器的Asp.net forms身份验证IIS7.5
EN

Stack Overflow用户
提问于 2013-01-23 13:27:54
回答 1查看 1.4K关注 0票数 1

我有一个在Windows2008 R2 (IIS7.5)上运行的Asp.Net web应用程序。我有两个服务器WWW1和WWW2,并且为"www“的循环DNS设置了DNS记录。我增加了AppPool超时和会话状态超时设置,这样用户在20分钟后就不会被注销。然而,我注意到用户是随机注销的。我认为发生的情况是用户转到www.foo.com并登录,然后一段时间后,循环调度会将他们导航到集群中未创建cookie的相对服务器(WWW1或WWW2),因此会提示他们登录。

我如何使用轮询DNS使其正常工作,同时仍然保持高可用性解决方案?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-23 14:03:04

这里的问题是,每个服务器都在内存中维护自己的会话状态,并且不知道在另一个服务器上创建的会话。

为了解决这个问题,您需要使用StateServer或SQLServer会话状态提供程序,而不是使用默认的InProc会话状态提供程序。

为此,您需要确保ASP.NET状态服务正在您的一台服务器上运行,然后您需要将以下配置项添加到应用程序的web.config文件的system.web部分,将“SampleStateServer”替换为运行ASP.NET状态服务的服务器的名称:

代码语言:javascript
复制
    <sessionState mode="StateServer"
      stateConnectionString="tcpip=SampleStateServer:42424"
      cookieless="false"
      timeout="20"/>

微软的相关文档可在http://msdn.microsoft.com/en-us/library/ms178586.aspx上找到

由于您是在web场中运行此应用程序,因此还需要确保两个服务器上的web应用程序使用相同的加密密钥。

为此,您需要在web.config中设置一个machineKey条目,这涉及到将如下条目添加到web.config的system.web部分:

代码语言:javascript
复制
<machineKey validationKey="4D0590A0E4DE163BAD0EEEB6747467D770CD5FB2EA95BF02B27787A45CA579DECB01E2A1F16563DBAB44C1C0E54C7E53D65F2A7D0FDF378F4D3702B3F2C8B165" decryptionKey="928771D7B1B8C32608F56AC428EC5902985F6FB2E6E9A78733B6EAA493FA13F5" validation="SHA1" decryption="AES" />

有几个网站会为你生成密钥。我通常使用http://aspnetresources.com/tools/machineKey

如果您希望改用SQLState提供程序,http://msdn.microsoft.com/en-us/library/ms178586.aspx在该页的“Sql Server模式”部分下提供了所有配置信息。这方面的设置稍微复杂一些,因为您必须配置一个存储状态的数据库。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14473050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档