IIS muestra la página de manera diferente cuando localhost se usa en URL vs. nombre de host

8

Estoy teniendo (otro) extraño problema con IIS. Cuando visualizo una página ASPX que he diseñado en mi máquina local, navegando hacia http://localhost/page.aspxla página se ve como se esperaba (y se ve igual en IE, Firefox y Chrome. Si cambio localhosta my_hostnamela página se muestra con una barra de desplazamiento vertical deshabilitada.

El comportamiento se notó por primera vez cuando publiqué mi sitio en nuestro servidor en vivo y vi la misma discrepancia. Después de golpearme la cabeza contra la pared, probé lo que describí anteriormente y pude duplicar mi "problema". Entonces con eso, me dirijo a ustedes.

Esto realmente no sería un problema (salvo por la inconsistencia entre navegadores), excepto que esto arruina una posición "absoluta" <div>moviéndolo a la mitad de la pantalla en lugar de estar centrado como debería ser (y es cuando se ve de otra manera excepto en IE cuando la dirección es cualquier cosa menos localhost).


Como otra prueba, agregué una nueva página aspx a mi proyecto y no agregué ni cambié ninguno de los códigos predeterminados. Si busco la página usando localhost no hay barra de desplazamiento. Si busco en la página usando my_hostname, la barra de desplazamiento está allí. Sea cual sea la diferencia, está haciendo que el procesamiento de CSS de IE se arruine, hasta el punto en que al principio todo funciona igual en todos los navegadores en los que estoy probando, y luego IE solo inventa sus propias reglas. Esto es increíblemente frustrante y realmente espero que esté haciendo algo mal y no sea un problema inherente.

maik
fuente
1
He podido solucionar el problema de CSS moviéndome <div>fuera del bloque en el que estaba y estableciendo un margen negativo. No es una solución elegante de ninguna manera, pero así es la vida cuando se garantiza la compatibilidad entre navegadores. Todavía sería bueno descubrir por qué es tan diferente.
maik

Respuestas:

9

Sé que este es un hilo viejo, pero acabo de encontrar el mismo problema. Si está utilizando IE8, el problema puede ser su Vista de compatibilidad. De forma predeterminada, los sitios en su intranet local, pero NO localhost, se representan en la vista de compatibilidad de IE7. Más información aquí:

http://msdn.microsoft.com/en-us/library/cc288325%28VS.85%29.aspx

Desafortunadamente, eso no ayuda a deshacerse de la barra de desplazamiento deshabilitada, pero explica la discrepancia.

Claire
fuente
Eso es excelente Gracias por encontrar y publicar la información sobre el problema.
maik
1
Parece que IE9 hace eso también. En el cuadro de diálogo Página> Configuración de vista de compatibilidad, desmarque "Mostrar sitios de intranet en Vista de compatibilidad" y se mostrará como lo hace en localhost.
Mike Caron el
7

El problema reside en la configuración de la vista de compatibilidad de IE8. Por defecto, los sitios de intranet (su servidor) se muestran en la vista de compatibilidad. Para anular este comportamiento, debe agregar el siguiente código a su código detrás de su página aspx.

protected override void OnPreInit(EventArgs e) {
    Response.AddHeader("X-UA-Compatible", "IE=8");       

    base.OnPreInit(e);
}

Funcionó para mi.

Yaron
fuente
Esto va bien con las cosas de compatibilidad que Claire mencionó anteriormente. Gracias por esta respuesta!
maik
1
jaja, acabo de recibir este problema, y ​​me dirigía aquí para poner una publicación pensando "la gente va a pensar que estoy loco". ¡Un millón de gracias!
NullOrEmpty
Alternativamente, puede agregar Response.AppendHeader("X-UA-Compatible", "IE=8");al Page_Loadmétodo en su Site.master.csarchivo.
Nick Chammas
+1 ¡Esta solución me ayudó a resolver mi mismo problema, increíble!
Alguien el
2

En IE9, los sitios que se ejecutan localhostse representan automáticamente en modo de compatibilidad. Para cambiar este comportamiento (predeterminado), haga esto:

  1. Si no está activado, active el comando de la barra de herramientas
  2. Haga clic en Página> Configuración para el modo de compatibilidad
  3. Desmarque "Mostrar intranetsites en modo de compatibilidad"
Techek
fuente
1

Aquí hay una publicación en StackOverflow sobre esto

básicamente cambie la parte superior de su diseño HTML o MasterPage (después de <%@...%>) a:

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
Serj Sagan
fuente
¡Esto fue de gran ayuda!
KFP
0

CSS no debería verse afectado por la URL. ¿Hay alguna posibilidad de que haya ocultado texto con la URL en algún lugar del cuerpo que está causando que cambie? Si ve el origen del archivo en ambas situaciones usando una herramienta como http://www.quickdiff.com/ , ¿hay algo diferente entre ellos?

Scott Forsyth - MVP
fuente
Ese es el pensamiento exacto que tuve, por lo que el problema parece desafiar la lógica. Lo único que se me ocurre es que IIS está haciendo algo especial en función de si la solicitud proviene de localhost o no. Si uso localhost, 127.0.01, mi dirección IPv4 o mi dirección IPv6 se muestra igual (sin barra de desplazamiento, etc.). Si uso el nombre de host de mi computadora o accedo a él desde otra computadora, se muestra con la barra de desplazamiento. Inicialmente examiné la fuente con mis ojos y no vi ninguna diferencia, y solo verifiqué eso usando quickdiff.com. <3 IIS :(
maik
Definitivamente extraño. ¿Qué tal un quickdiff en los archivos css? La otra cosa a verificar es firebug o fiddler2 para ver si los encabezados son diferentes. Eso mostrará lo que IIS está enviando en los encabezados.
Scott Forsyth - MVP
Parte de mi depuración fue mover el poco CSS que tenía al archivo aspx, así que no hay nada especial en ese departamento. Echaré un vistazo a Fiddler y veré si puedo ver alguna diferencia.
maik
Fiddler muestra diferencias en los encabezados de solicitud y respuesta. No parece nada espectacular, pero tal vez IE esté tomando una decisión de representación basada en algo allí ... En los encabezados de solicitud, la única diferencia es que en los encabezados de solicitud my_hostname, el encabezado de Autorización aparece antes del encabezado del Host mientras está lo contrario en la solicitud localhost. En los encabezados de respuesta, Persistent-Auth se establece en false en my_hostname y true en localhost. El token codificado en WWW-Authenticate también es significativamente más largo en my_hostname que localhost, pero el método sigue siendo Negotiate.
maik
¿Hay alguna posibilidad de que en IE el sitio esté configurado en una zona diferente? es decir, con una URL de confianza y con otra no. Sin embargo, eso solo afectaría a IE.
Scott Forsyth - MVP
0

La solución que @Claire se aplica también a IE 11 . Estaba teniendo problemas donde css no se aplicaba al acceder al sitio a través del nombre de host del servidor, pero localhost se mostró bien.

Arreglar:

Internet Options -> Uncheck Display intranet sites in Compatibility View

Sin embargo, no estoy seguro de por qué localhost no se considera un sitio de intranet .

Daniel Orlan
fuente
-1

Solo para decir que estaba teniendo un problema similar al OP y aplicando el código que Serj Sagan sugirió a la página maestra de mi sitio, pero cambié IE = Edge a IE = 11, ahora cuando se publica, todo se muestra como debería.

Badvoc
fuente