asp.net - 当主机名中的下划线时,表单例份验证无法识别为在 IE 下登录

标签 asp.net internet-explorer iis forms-authentication

在我的 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/

相关文章:

c# - 在同一解决方案中找不到引用

javascript - ie理解的json数据格式是什么?

javascript - 可靠地呈现在网页上加载时打开打印对话框的 PDF

ajax - "405 Method Not Allowed"仅在 Firefox 6 中调用 WCF 服务时不在 IE 9 中

c# - 如何将一些自定义数据与当前的 HttpRequest 相关联?

.net - HttpHandler 在 IIS 7 中不起作用

c# - 在sql查询中使用参数来确定要使用哪一列

javascript - ASP.Net、JavaScript 中 GridView 上的线条

c# - 当指定级联删除时, Entity Framework 无法加载外键数组属性

html - IE9 中的选择框自定义