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