在我的 asp.net webforms 应用程序中,我使用连接到我的数据库的简单和简单的表单例份验证(使用标准成员资格提供程序)。一切正常,我可以登录、注销、获取角色等...
但是,在将我的站点部署到 Intranet IIS 服务器后,我注意到无法对 IE 进行身份验证。登录的实际身份验证过程有效(因为它会告诉您密码/用户名何时错误),但在身份验证完成后,它声称您没有登录。
这仅适用于我在本地部署的 IIS 环境,而在我的 VS 环境中,一切都在 IE 中正常运行。虽然在部署的 IIS chrome 和 Firefox 中工作得很好。
我唯一能说的就是 IE 似乎没有获取或保存身份验证 cookie。这与 IE 设置无关,因为我将 IE8 设置为接受所有 cookie,并且我在同事的 IE8 机器和另一台 IE7 机器上进行了测试,结果相同。
我的 web.config 使用以下设置:
<authentication mode="Forms" >
<forms cookieless="UseCookies" />
</authentication>
有没有人至少知道我会在哪里开始调试这个问题?
谢谢,
编辑:我现在被迫解决这个问题,因为我的网络服务器不能很好地与 URL 身份验证配合使用。
我使用过 fiddler 并发现当我在 IE 中时,IIS7 没有向我发送任何 cookie。标题中没有 cookie。但是,在向 Mozilla 和 Chrome 浏览器提供站点时,cookie 正确地位于 header 中。我不知道为什么......
Edit2:作为旁注,当我直接登录Web服务器时,如果我去
Http://localhost/
IIS 向 IE 发送 cookie 很好,但如果我去 http://qa_build/
(这是服务器的计算机名称)IIS 不会将 cookie 发送到 IE。
最佳答案
终于想出了答案。事实证明,如果域中有下划线,Internet Explorer 将不会存储 cookie。将计算机名称更改为 qabuild 修复了它。
http://support.microsoft.com/kb/316112
关于asp.net - 当主机名中的下划线时,表单例份验证无法识别为在 IE 下登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3144394/