IIS отображает страницу по-разному, когда localhost используется в URL и имя хоста
У меня (еще одна) странная проблема с IIS. При просмотре страницы ASPX, которую я разработал на моей локальной машине, перейдите к http://localhost/page.aspx
страница выглядит как положено (и выглядит одинаково в IE, Firefox и Chrome. Если я изменю localhost
в my_hostname
страница отображается с отключенной вертикальной полосой прокрутки.
Такое поведение впервые было замечено, когда я опубликовал свой сайт на нашем работающем сервере и увидел такое же несоответствие. После того, как я ударился головой о стену, я попробовал то, что описал выше, и смог повторить мою "проблему". Итак, с этим я обращаюсь к вам, ребята.
Это действительно не будет проблемой (за исключением несоответствия между браузерами), за исключением того, что это приводит к "абсолютному" позиционированию. <div>
переместить его на полпути от экрана вместо центрирования, как это должно быть (и это при просмотре любым другим способом, кроме как в IE, когда адрес не является локальным).
В качестве другого теста я добавил новую страницу aspx в свой проект и не добавил и не изменил код по умолчанию. Если я перехожу на страницу с помощью localhost, полоса прокрутки отсутствует. Если я перехожу на страницу, используя my_hostname, полоса прокрутки там. Как бы то ни было, это приводит к тому, что обработка CSS в IE облажается, и вначале все работает одинаково во всех браузерах, в которых я тестирую, а затем IE просто устанавливает свои собственные правила. Это невероятно расстраивает, и я очень надеюсь, что просто делаю что-то не так, и это не является врожденной проблемой.
7 ответов
Я знаю, что это старая тема, но я столкнулся с той же проблемой. Если вы используете IE8, проблема может заключаться в представлении совместимости. По умолчанию сайты в вашей локальной интрасети - но НЕ localhost - отображаются в представлении совместимости IE7. Больше информации здесь:
http://msdn.microsoft.com/en-us/library/cc288325%28VS.85%29.aspx
К сожалению, это не помогает избавиться от отключенной полосы прокрутки, но объясняет несоответствие.
Проблема заключается в настройках представления совместимости IE8. По умолчанию сайты интрасети (ваш сервер) отображаются в режиме совместимости. Чтобы переопределить это поведение, вы должны добавить следующий код в ваш код за страницей aspx.
protected override void OnPreInit(EventArgs e) {
Response.AddHeader("X-UA-Compatible", "IE=8");
base.OnPreInit(e);
}
Это сработало для меня.
В IE9 сайты работают на localhost
автоматически отображаются в режиме совместимости. Чтобы изменить это поведение (по умолчанию), сделайте следующее:
- Если не активирован, активируйте панель инструментов Command
- Нажмите Страница> Настройки для режима совместимости
- Снимите флажок "Отображать интранетсайты в режиме совместимости"
Вот пост на StackOverflow об этом
в основном изменить верхнюю часть вашего HTML-макета или MasterPage(после <%@...%>
) к:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
Исправление, которое @Claire применимо и к IE 11. У меня были проблемы, когда css не применялся при доступе к сайту через имя хоста сервера, но локальный хост отображался нормально.
Чинить:
Internet Options -> Uncheck Display intranet sites in Compatibility View
Я не уверен, почему localhost не считается интранет-сайтом.
CSS не должен зависеть от URL. Есть ли шанс, что у вас есть скрытый текст с URL-адресом где-то в теле, которое вызывает его смещение? Если вы просматриваете источник файла в обеих ситуациях с помощью инструмента, такого как http://www.quickdiff.com/, есть ли что-то между ними?
Просто чтобы заявить, что у меня была проблема, аналогичная OP, и применение кода, предложенного Сержем Саганом, на главной странице моего сайта, но изменил IE=Edge на IE=11, теперь, когда он опубликован, все отображается так, как должно.