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

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

我在 IIS 中遇到了(又一个)奇怪的问题。当我在本地机器上浏览我设计的 ASPX 页面时,http://localhost/page.aspx页面看起来与预期一致(在 IE、Firefox 和 Chrome 中看起来也一样)。如果我切换localhostmy_hostname该页面,则会显示禁用的垂直滚动条。

当我将我的网站发布到我们的实时服务器并看到同样的差异时,我第一次注意到了这种行为。在绞尽脑汁之后,我尝试了上述方法,并能够重现我的“问题”。因此,我向你们求助。

这实际上不是一个问题(除了跨浏览器不一致),只是这会搞砸一个“绝对”定位,<div>将其移出屏幕的一部分,而不是像它应该的那样居中(从其​​他任何角度看都是如此)。除了在 IE 中,当地址不是 localhost 时)。


作为另一项测试,我在项目中添加了一个新的 aspx 页面,并且没有添加或更改任何默认代码。如果我使用 localhost 浏览页面,则没有滚动条。如果我使用 my_hostname 浏览页面,则滚动条会出现。无论差异是什么,它都会使 IE 的 CSS 处理变得一团糟,以至于一开始在我测试的所有浏览器中一切都运行相同,但之后 IE 只是制定了自己的规则。这令人非常沮丧,我真的希望我只是做错了什么,而不是固有的问题。

答案1

我知道这是一个老话题,但我刚刚遇到了同样的问题。如果您使用的是 IE8,问题可能出在其兼容性视图上。默认情况下,本地内联网中的站点(但不是本地主机)在 IE7 兼容性视图中呈现。更多信息请见此处:

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

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

答案2

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

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

    base.OnPreInit(e);
}

它对我有用。

答案3

在 IE9 中,运行的网站localhost会自动以兼容模式呈现。要更改此(默认)行为,请执行以下操作:

  1. 如果未激活,请激活工具栏命令
  2. 单击页面 > 兼容模式设置
  3. 取消选中“以兼容模式显示 Intranet 站点”

答案4

CSS 不应受 URL 影响。您是否有可能在正文的某个地方隐藏了带有 URL 的文本,导致其发生偏移?如果您在两种情况下使用类似工具查看文件源代码http://www.quickdiff.com/,它们之间有什么不同吗?

相关内容