ASP.NET 网站在部署时看起来不同

Posted

技术标签:

【中文标题】ASP.NET 网站在部署时看起来不同【英文标题】:ASP.NET website looks different when deployed 【发布时间】:2011-07-07 03:04:47 【问题描述】:

我已经用谷歌搜索了这个问题的答案,但没有找到任何答案。也许我使用的搜索词太笼统了......无论如何,这里是:

我正在发现网页设计和 ASP.NET 的乐趣,以及试图让事物在 IE 和所有其他浏览器中以相同方式显示的噩梦。 我在 VS2010 中工作并使用 IE8 调试我的网站。我真正不明白的是为什么网站在 IE 中发布后看起来与在调试模式下看起来不同......我的意思只是小事,比如 gridviews 中的边框在已发布的网站中消失,简单的 html 水平规则也不一样。

它也把我的列表菜单弄得一团糟,但我设法用 *display: inline; 解决了这个问题。黑客。奇怪的是它在调试模式下不需要它,但发布的网站需要它。

我在自己的机器上托管该网站,运行 Win XP Pro 并通过 .NET 4.0 的 IIS 托管...问题可能与 IIS 有关吗?

任何帮助都将不胜感激,因为这些差异非常荒谬,让我陷入绝望。我希望这里的每个人都使用 Chrome 或 Safari,但不幸的是 IE 在日本仍然统治着......

【问题讨论】:

您是否使用完全相同的浏览器查看该网站?没有兼容模式等? 您能否提供两者的屏幕截图并最好突出显示差异?不,IIS 不会发生这种情况。这本身不是 IE 问题。 @JohnIdol - 是的,同一台机器上的同一个浏览器。网站的外观在 Chrome、Safari 或 Opera 上没有变化,但在 IE 下就不一样了... @Shiv Kumar - 如果我能弄清楚怎么做的话,我会试着放截图。我认为你是对的,因为它不是 IIS,因为在这种情况下,所有浏览器都应该受到影响。 【参考方案1】:

这对我有用,会覆盖 ie 中的设置

您网页的 HEAD 元素中的 META 标记(或在母版页中更好)

<meta http-equiv=“X-UA-Compatible” content=“IE=8” />

此处链接到信息 http://blogs.msdn.com/b/askie/archive/2009/03/23/understanding-compatibility-modes-in-internet-explorer-8.aspx

【讨论】:

是的,这就是我最终解决它的方式。不过,你不得不求助于那种东西真是太疯狂了…… 这节省了我的一天(对不起,我要疯了,不得不使用大写字母!!!)有人知道为什么会这样吗?【参考方案2】:

我发现在 IIS 中覆盖 HTTP 响应标头中的兼容性更好,添加标头:

X-UA-Compatible: IE=Edge

IE=Edge 部分将设置兼容性以使用可用的最高模式,将适用于所有用户,也适用于网站中的所有页面,同时只需将标题放在一个位置。

【讨论】:

这是我走的路线。我正在使用的网站使用框架集而不是母版页,因此将其添加到每个 ASPX 标头是不切实际的。将它添加到我在 IIS 中的网站就是门票。 这里只是为了“捎带”安德鲁,如果有人在 IIS 中遇到了这个问题,同样可以在你的 web.config 文件中完成。将以下&lt;add name="X-UA-Compatible" value="IE=edge,chrome=1" /&gt; 放在您的&lt;system.webServer&gt;&lt;httpProtocol&gt;&lt;customHeaders&gt; 标记下,IIS 会选择它并将其添加到它的设置中。【参考方案3】:

我看到了与受信任站点/Intranet 站点/Internet 站点安全设置相关的类似行为。当您在调试模式下运行时,您使用的 URL 是否与发布时不同?我有时会看到,当我使用http://localhost/xxx 之类的 URL 进行调试时,当我使用http://machinename.domain.com/xxx 之类的 URL 直接从 IIS 访问同一个站点时,一个解析到受信任的站点或本地 Intranet,另一个解析到 Internet,它会发生变化基于 IE 设置的外观。

【讨论】:

我想可能是这样。当我调试它时,它确实通过本地主机/网站地址运行,而当我部署它时,访问通过机器/网站地址进行,就像你说的那样。我明天去看看,看看我能不能调整设置让它消失。 就是这样。当域名不包含“.”时,IE默认为受信任站点。刚刚通过ComputerName/SiteName 和ComputerIP/SiteName 访问该站点对其进行了测试。通过指定 IP 访问时,该站点将按应有的方式显示。多么痛苦。非常感谢您的帮助! 很高兴我能帮上忙。这个问题几乎每周都会给我带来问题。看起来很完美,然后进行测试并返回,因为它看起来不正确。让我发疯。 哇,这对我也有帮助,谢谢!这是否意味着我们应该始终通过 ip 地址而不是 localhost 从 VS2010 启动? 我对此做了更多的研究,它是在 IE8 和 IE9 的工具->兼容性视图设置菜单中的“在兼容性视图中显示 Intranet 站点”设置。如果您的 Web 应用程序要部署在 Intranet 上,这可能会出现问题,因为默认情况下它处于启用状态。如果没有,请在您的开发机器上关闭它,它会正常显示。【参考方案4】:

对于那些使用 ASP.NET MVC 的,你可以添加 kgp4death 的

&lt;meta http-equiv=“X-UA-Compatible” content=“IE=8” /&gt;

到您的 _Layout.cshtml 中的 head 元素。

【讨论】:

【参考方案5】:

我认为您在&lt;script src="path"&gt; 中没有给出正确的路径。请检查您的路径并检查相关文件,您必须将此文件放在项目文件夹中

希望这个建议能解决你的问题

【讨论】:

以上是关于ASP.NET 网站在部署时看起来不同的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Web API 身份验证(Web + 移动)

理解ASP.NET Core

asp.net 点击一下文件名或者一个下载按钮,将文件下载下来怎么做啊???

win7+iis7.5+asp.net下 CS0016: 未能写入输出文件“c:WindowsMicrosoft.NETFrameworkv2.0.50727Temporary ASP.NE

Jquery禁用Asp.net核心中的选定选项无法正常工作

构建 ASP.NET Web Api 时是不是必须使用 HTTP 协议和 HttpResponseMessage 类?