2012-03-07 252 views
0

我在WinServer2k8机器上有一个ASP.NET网站,它通过Forms身份验证进行了验证。此时,如果有一个人在机器A上登录,则机器B上的所有登录尝试都将失败(A & B正在使用相同的互联网连接访问服务器)。登录请求不会返回任何错误,而是只是重定向回登录屏幕,就好像认证从未发生过一样。我想知道如何通过IIS7或web.config文件配置此站点,以便它允许任意数量的同时用户会话。网站的所有设置均设置为IIS7默认值。我试过在IIS7中更改会话状态模式,最大会话属性和表单身份验证设置。将IIS配置为允许多个用户同时访问

任何帮助表示赞赏。

P.S. - 我也测试过使用不同IP地址进行互联网连接的机器,我仍然无法从这一端开始同步会话。

P.P.S - 如果我试图从服务器机器上的网络浏览器开始一个会话,每次都会工作,不管是谁登录。思考?

编辑 - 我使用Windows会话凭据进行身份验证 - 使用的网页后端是LogonUser的方法,这是从ADVAPI32.DLL

+0

你有任何可以做到这一点的自定义验证码吗? – Jacob 2012-03-07 00:54:38

+0

噢,我忘了提及我使用Windows会话凭据进行身份验证 - 网页后端使用的方法是LogonUser,它是从advapi32.dll导入的 – Maximilian 2012-03-07 14:44:02

回答

0

我发现我的问题的根源,而事实证明,有什么不对我用窗体身份验证的方式。

错误原因是验证请求的超时值对任何计算机来说都太低,除非承载网站的服务器超出。我将web.config文件中的Forms标记的超时值从5修改为5000,并且这样做了。

因此,似乎是服务器处理不当会话的问题实际上仅仅是其他机器无法及时完成认证请求。还是要谢谢你的帮助。

0

如果你更多地了解窗体身份验证的细节进口的,你知道IIS/ASP.NET使用cookie来识别用户是否已通过身份验证。对于负载平衡方案,您需要启用ASP.NET会话,并使用进程会话模式(建议使用SQL Server模式)。只有

以这种方式,用户的会话贯穿机有效,他/她可以访问身份验证的其中一个,毕竟盒,

你需要注意的最后一位是本机键。对于所有盒子,它们必须使用相同的机器密钥来加密会话信息。否则,如果用户在一个盒子上被认证,另一个盒子不能解密该信息。

http://msdn.microsoft.com/en-us/library/ff649308.aspx

+0

如果我要使用SQL Server模式,我会必须重新验证后端,还是仍然可以使用Windows会话凭据进行身份验证? (请参阅原始帖子上的编辑) – Maximilian 2012-03-07 15:30:20

+0

我不确定这是否会起作用,因为您正在使用自定义身份验证提供程序。但通常会话模式与认证无关。 – 2012-03-08 03:45:58

相关问题