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 автоматически отображаются в режиме совместимости. Чтобы изменить это поведение (по умолчанию), сделайте следующее:

  1. Если не активирован, активируйте панель инструментов Command
  2. Нажмите Страница> Настройки для режима совместимости
  3. Снимите флажок "Отображать интранетсайты в режиме совместимости"

Вот пост на 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, теперь, когда он опубликован, все отображается так, как должно.

Другие вопросы по тегам