Назад | Перейти на главную страницу

IIS по-разному отображает страницу, когда localhost используется в URL-адресе и имени хоста

У меня (еще одна) странная проблема с IIS. При просмотре страницы ASPX, которую я создал на своем локальном компьютере, перейдя на http://localhost/page.aspx страница выглядит так, как ожидалось (и выглядит так же в IE, Firefox и Chrome. Если я изменю localhost к my_hostname страница отображается с отключенной вертикальной полосой прокрутки.

Это поведение было впервые замечено, когда я опубликовал свой сайт на нашем сервере и увидел такое же несоответствие. Ударившись головой о стену, я попробовал то, что описал выше, и смог продублировать свою «проблему». На этом я обращаюсь к вам, ребята.

На самом деле это не было бы проблемой (если бы не кроссбраузерность), за исключением того, что это портит "абсолютное" позиционирование <div> перемещая его наполовину за пределы экрана вместо того, чтобы центрировать, как должно быть (и при просмотре с любой другой стороны Кроме в IE, когда адрес не является локальным).


В качестве еще одного теста я добавил в свой проект новую страницу aspx и не добавил и не изменил код по умолчанию. Если я перехожу на страницу с помощью localhost, полосы прокрутки нет. Если я перейду на страницу, используя my_hostname, полоса прокрутки будет там. Какой бы ни была разница, это приводит к тому, что обработка CSS в IE приводит к тому, что сначала все работает одинаково во всех браузерах, в которых я тестирую, а затем IE просто устанавливает свои собственные правила. Это невероятно расстраивает, и я действительно надеюсь, что делаю что-то не так, и это не внутренняя проблема.

Я знаю, что это старый поток, но я столкнулся с той же проблемой. Если вы используете 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. Если не активировано, активируйте команду панели инструментов
  2. Щелкните Страница> Настройки для режима совместимости.
  3. Снимите флажок "Отображать интранет-сайты в режиме совместимости".

Вот сообщение об этом на StackOverflow

просто измените верхнюю часть HTML-макета или MasterPage (после <%@...%>) в:

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="X-UA-Compatible" content="IE=Edge" />

URL не должен влиять на CSS. Есть ли шанс, что у вас есть скрытый текст с URL-адресом где-то в теле, который вызывает его смещение? Если вы просматриваете источник файла в обеих ситуациях с помощью такого инструмента, как http://www.quickdiff.com/, есть ли между ними что-нибудь разное?

Исправление, к которому применяется @Claire IE 11 также. У меня были проблемы, когда css не применялся при доступе к сайту через имя хоста сервера, но localhost отображался нормально.

Исправить:

Internet Options -> Uncheck Display intranet sites in Compatibility View

Я не уверен почему localhost не считается сайт интрасети хотя.

Просто чтобы заявить, что у меня была проблема, аналогичная OP, и я применил код, который Серж Саган предложил на моей главной странице сайта, но изменил IE = Edge на IE = 11, теперь при публикации все отображается как должно.