为什么ASP.net表单身份验证会将我注销(当不直接连接到我的盒子上时)?

时间:2009-11-25 04:28:38

标签: asp.net login forms-authentication

我的服务器上有一个ASP.net 2.0应用程序。当我在盒子上并浏览(http://serverNamehttp://localhost)网站时,我可以使用表单身份验证登录并毫不费力地浏览网站。

我从内联网浏览该服务器的那一刻我仍然可以登录,但是当我点击主页上的任何链接时,我会被要求再次登录。我可以访问主页,因此身份验证正在运行,但之后我会立即重定向到登录页面。我在两种情况下都使用相同的用户ID。

这不是一个浏览器cookie未启用的情况,这种情况发生在几个不同的工作站上,使用IE和Firefox。我在同一台机器上运行另一个ASP.Net应用程序,它在本地或外部都可以正常工作。 (它是相同应用程序的旧版本,也使用表单身份验证。)

我正在使用inproc会话,而不是无cookie会话。基本上是开箱即用的会话设置。

两个虚拟目录(新旧应用程序)上的表单身份验证设置与我能说的最佳相同,并且我没有在计算机上运行防火墙。

我无法解释这一点,如果你有一些我可以研究的建议,我将不胜感激。谢谢!

编辑:当我将web.config中的标记设置为“On”或“RemoteOnly”时,会出现这种情况。我从ieHttpHeaders看到有一个对WebResource.axd的调用,然后调用的下一页是我的自定义错误页面。当我将customErrors设置为off时,事情按预期工作。所以看起来错误是以某种方式来自WebResource.axd。

不幸的是,自定义错误页面的Page_Load方法发送的信息非常少。事件args为null,发件人为ASP.error_aspx,但我看不到太多信息。

如果有任何响铃,如果你有任何想法尝试调试,我很高兴听。再次感谢。

1 个答案:

答案 0 :(得分:1)

我正在升级旧网站以使用动态数据,这两个网站都使用表单身份验证,我在本地测试它们。

<强>问题: 比较网站A &amp;我在浏览器中发现网站B ,当我使用网站A 切换到使用网站B 时,我必须重新登录网站B ,反之亦然。

<强>解决方案: 在我对此的调查中,我发现了造成这种现象的原因。网站A&amp;站点B具有相同的身份验证cookie名称

网站A

<forms name="form1" loginUrl="login.aspx" path="/"  >
</forms>

网站B

<forms name="form1" loginUrl="login.aspx" path="/"  >
</forms>

我将名称更改为唯一,这解决了问题。

网站A

<forms name="sitea" loginUrl="login.aspx" path="/"  >
</forms>

网站B

<forms name="siteb" loginUrl="login.aspx" path="/"  >
</forms>

注意:http:// localhost / SiteA&amp; http:// localhost / SiteB托管在同一网站( localhost )上,因此身份验证Cookie被覆盖。