Asp.net 在主机名中加下划线时,表单身份验证无法识别为在IE下登录

Asp.net 在主机名中加下划线时,表单身份验证无法识别为在IE下登录,asp.net,internet-explorer,iis,forms-authentication,Asp.net,Internet Explorer,Iis,Forms Authentication,在我的asp.net webforms应用程序中,我使用连接到数据库中的普通和简单表单身份验证(使用标准成员资格提供程序)。一切正常,我可以登录、注销、获取角色等 但是,在将我的站点部署到intranet IIS服务器后,我注意到IE无法进行身份验证。登录的实际身份验证过程是有效的(当您的密码/用户名错误时,它会告诉您),但在身份验证完成后,它会声明您没有登录 这仅适用于我部署的IIS环境,在本地,而在我的VS环境中,IE中的一切工作正常。而在部署的IIS中,chrome和Firefox工作正常

在我的asp.net webforms应用程序中,我使用连接到数据库中的普通和简单表单身份验证(使用标准成员资格提供程序)。一切正常,我可以登录、注销、获取角色等

但是,在将我的站点部署到intranet IIS服务器后,我注意到IE无法进行身份验证。登录的实际身份验证过程是有效的(当您的密码/用户名错误时,它会告诉您),但在身份验证完成后,它会声明您没有登录

这仅适用于我部署的IIS环境,在本地,而在我的VS环境中,IE中的一切工作正常。而在部署的IIS中,chrome和Firefox工作正常

我唯一能说的是IE似乎没有获取或保存身份验证cookie。这与IE设置无关,因为我的IE8设置为接受所有cookies,并且我在同事的IE8机器和另一个IE7机器上进行了测试,结果相同

My web.config正在使用以下设置:

<authentication mode="Forms" >
  <forms cookieless="UseCookies" />
</authentication>  

是否有人至少知道我将从哪里开始调试这个问题

谢谢


编辑:我现在被迫修复这个问题,因为我的Web服务器不能很好地使用URL身份验证

我使用了fiddler,发现当我在IE中时IIS7没有向我发送任何cookies。标题中没有cookies。不过,当将站点提供给Mozilla和Chrome浏览器时,cookie在标题中的位置是正确的。我不知道为什么



Edit2:顺便说一下,当我直接登录到web服务器时,如果我转到
Http://localhost/
IIS发送IE cookies很好,但是如果我转到
http://qa_build/
(这是服务器的计算机名)IIS不会将cookies发送到IE。

页面上是否有其他与登录无关的提交按钮


我在尝试登录一次时遇到了类似的问题,发现只有当我点击enter键而不是单击login按钮时才会发生这种情况,而这是由另一个按钮使用默认按钮单击造成的。它将进行身份验证,但不会给我任何用户角色。

最终找到了答案。如果域中有下划线,Internet Explorer将不会存储cookie。将计算机名更改为qabuild修复了此问题


不,不是这样。My login.aspx页面只有一个按钮,并且上面只有一个登录控件(对登录控件模板或代码没有任何修改)。您尝试过其他浏览器吗?结果如何?该域正在设置哪些cookie?这是一个非常奇怪的问题,任何人都知道微软方面的解释。这让我想起了Audacity通过标签名导出到文件时遇到的问题。其中一个标签名为“con”,这是一个非法文件名。我刚刚花了6个小时来解决这个问题!!!!非常感谢你发布这篇文章。我不得不重命名一个虚拟机,我随机选择了一个带有下划线的名称。我不敢相信这就是破坏我应用程序的原因。IE9也做同样的事情。你们能至少给我一个警告吗?域名中不允许使用下划线。Oracle和Apache也有同样的问题。