FormsAuthentication在除IE之外的每个浏览器中工作

时间:2011-09-27 14:56:13

标签: c# asp.net internet-explorer forms-authentication

这肯定是一个奇怪的...

我有一个ASP.net 4.0,C#网站,它有一个使用FormsAuthentication处理用户访问的登录页面。整个站点中还有代码,只要会话超时或者需要再次登录的其他内容,就会将用户引导回登录页面。这是我以前做过十几次基本的事情。

我知道整个过程正在运行,因为我已经能够在我尝试的每个浏览器上登录通过VS2010运行的站点。当它使用Chrome,Firefox,Safari(Mac)和两个手机浏览器坐在开发服务器上时,它也可以正常工作。我唯一遇到问题的是Internet Explorer。

现在,这个有点难以调试,因为它在本地IE中工作但在服务器上不工作。事实上,它也可以在服务器上的其他浏览器中运行,这也排除了服务器配置问题。

我尝试找出可能出错的地方是向我的FormsAuthentication.RedirectToLogin添加查询字符串(“WhateverPage = WhateverSectionOfCode”);尝试解决这个问题。问题是,当我在IE中运行该站点时,它永远不会附加查询字符串,这使我相信它永远不会遇到任何“RedirectToLogin”行。

我知道它会进行身份验证,因为只有在用户通过身份验证后,才会触发更新数据库中上次登录时间戳的代码。看起来好像“RedirectFromLogin”行已经出去并在web.config中找到了正确的条目......它实际上可能会重定向我,但即使它确实如此,它总是会将我反弹回登录屏幕。 / p>

我已经完成了可能导致此问题的所有非常基本的ID-10T错误(heh):提高了安全设置,禁用了Cookie等,但我在多台计算机上获得了相同的结果。< / p>

我真的很难过接下来要检查什么。我已经在代码上看到了另外两组,但他们无法提出任何理由来解释为什么会发生这种情况。如果有人对可能发生的事情有任何建议,我很乐意听到。

谢谢!

3 个答案:

答案 0 :(得分:4)

我知道这张票有点旧,但显然IE无法在名称中带下划线的域上设置表单身份验证。因此,如果问题出现在开发服务器上,例如Dev_XP,那么IE将无法设置身份验证cookie。

这就是我发生的事。这是链接:http://orwin.ca/2012/02/09/formsauthentication-setauthcookie-not-working-in-ie-but-works-in-other-browsers/

这是KB artical,概述了问题http://support.microsoft.com/kb/316112

答案 1 :(得分:3)

我认为它是关于饼干的东西..

你是否在web.config中设置了domain属性?

<authentication mode="Forms">
  <forms loginUrl="~/login.aspx" name="cookiename" domain="domain.com" cookieless="UseCookies" slidingExpiration="true" timeout="60"/>
</authentication>

forms Element for authentication (ASP.NET Settings Schema)

答案 2 :(得分:-1)

我遇到了同样的问题,但使用除Chrome之外的所有其他浏览器。 奇怪的是,当在本地(在运行服务的同一台计算机上)尝试所有这些浏览器时,一切正常。 当我进行远程连接时,只有Chrome可以工作。 Firefox和IE每次都将我重定向到登录页面,尽管用户已通过身份验证-与您的身份相同,但数据库登录时间戳已更新。 但是我还有位于其他网络中的开发服务器,连接到该网络所需的时间更少,而且这三种浏览器也都可以正常工作。 因此,我认为问题出在IIS设置中,这在实际服务器与开发人员服务器上可能有所不同,或者在创建会话的重定向和线程中可能存在问题。我找到了一些nteresting topic about this。它是关于ASP WebForms的。参见my question on stakoverflow。而且,请告诉我您是否可以解决此问题!