我创建了一个使用基本 asp.net 身份验证的 Web 应用程序。从代码角度来看,身份验证系统运行良好,但我无法让 IIS7 将 cookie 发送到 IE Web 浏览器。
当我使用 Chrome 或 Firefox 浏览我的网站时,一切都运行正常,我可以在标头中看到 Cookie。但是,当我尝试在 IE 下登录时,登录成功,但 HTTP 标头中没有发送 Cookie。
我不知道如何进一步调试此问题。IE 设置为接受所有 cookie,但 IIS 似乎没有向浏览器提供任何 cookie。如果我在网络服务器上浏览http://本地主机/一切正常,但如果我使用网络服务器的 DNS 名称,我也不会得到任何 cookie。
如果我将应用程序的 web.config 配置为在 IIS 检测到它不能使用 cookie 时使用基于 URL 的身份验证,IIS 会以某种方式发现它无法获取 cookie,然后使用基于 URL 的身份验证。
到目前为止,对我来说,问题似乎是 IIS,因为我已在 IE 中完全启用了 cookie,但它仍然不起作用。此外,相同的 Web 应用程序在 IE 中的本地 IIS 服务器上运行,cookie 运行正常,即使外部用户使用我的 DNS 名称也是如此。但是,我不知道接下来该怎么办。
任何帮助将不胜感激。
答案1
终于找到了答案。原来,如果域名中有下划线,Internet Explorer 会告诉 Web 服务器永远不要发送 Cookie。删除计算机名称中的下划线即可解决该问题。