在 URL 与主机名中使用 localhost 时,IIS 显示页面的方式不同

mai*_*aik 8 iis css

我在 IIS 上遇到了(又一个)奇怪的问题。当通过浏览查看一个ASPX页面我设计我的本地机器上http://localhost/page.aspx如预期的页面看起来(并期待在IE,Firefox和Chrome。如果我改变同样localhostmy_hostname呈现页面与禁用的垂直滚动条。

当我将我的网站发布到我们的实时服务器并看到相同的差异时,首先注意到了这种行为。在用头撞墙后,我尝试了上面描述的方法,并且能够复制我的“问题”。因此,我转向你们。

这不是一个真正的问题(除了跨浏览器的不一致),只是这会搞砸一个“绝对”定位,<div>将它移离屏幕的一半,而不是像它应该的那样居中(并且是当以任何其他方式查看时)除了在 IE 中地址不是本地主机时)。


作为另一个测试,我向我的项目添加了一个新的 aspx 页面,并且没有添加或更改任何默认代码。如果我使用 localhost 浏览到页面,则没有滚动条。如果我使用 my_hostname 浏览页面,滚动条就在那里。不管有什么区别,它都会使 IE 对 CSS 的处理变得一团糟,以至于起初在我测试的所有浏览器中一切都一样,然后 IE 只是制定自己的规则。这非常令人沮丧,我真的希望我只是做错了什么,这不是一个固有的问题。

小智 9

我知道这是一个旧线程,但我遇到了同样的问题。如果您使用的是 IE8,问题可能在于其兼容性视图。默认情况下,本地 Intranet 中的站点 - 但不是 localhost - 在 IE7 兼容性视图中呈现。更多信息在这里:

http://msdn.microsoft.com/en-us/library/cc288325%28VS.85%29.aspx

不幸的是,这无助于摆脱禁用的滚动条,但它确实解释了这种差异。


小智 7

问题在于 IE8 兼容性视图设置。默认情况下,Intranet 站点(您的服务器)显示在兼容性视图中。要覆盖此行为,您应该将以下代码添加到 aspx 页面后面的代码中。

protected override void OnPreInit(EventArgs e) {
    Response.AddHeader("X-UA-Compatible", "IE=8");       

    base.OnPreInit(e);
}
Run Code Online (Sandbox Code Playgroud)

它对我有用。