IIS visualizza la pagina in modo diverso quando localhost viene utilizzato in URL vs. nome host


8

Sto riscontrando (ancora un altro) strano problema con IIS. Quando visualizzo una pagina ASPX che ho progettato sul mio computer locale, sfogliando http://localhost/page.aspxla pagina appare come previsto (e sembra lo stesso in IE, Firefox e Chrome. Se cambio localhostalla my_hostnamepagina viene visualizzato con una barra di scorrimento verticale disabilitata.

Il comportamento è stato notato per la prima volta quando ho pubblicato il mio sito sul nostro server live e ho riscontrato la stessa discrepanza. Dopo aver battuto la testa contro il muro ho provato quello che ho descritto sopra e sono stato in grado di duplicare il mio "problema". Quindi, mi rivolgo a voi ragazzi.

Questo non sarebbe davvero un problema (salvo l'incoerenza cross-browser) tranne per il fatto che questo rovina un posizionamento "assoluto" <div>spostandolo parzialmente dallo schermo invece di essere centrato come dovrebbe essere (ed è visto in qualsiasi altro modo tranne in IE quando l'indirizzo è tutt'altro che localhost).


Come altro test ho aggiunto una nuova pagina aspx al mio progetto e non ho aggiunto o modificato alcun codice predefinito. Se sfoglio la pagina usando localhost non c'è barra di scorrimento. Se sfoglio la pagina usando my_hostname, la barra di scorrimento è lì. Qualunque sia la differenza, sta facendo in modo che l'elaborazione di CSS di IE venga rovinata, al punto che all'inizio tutto funziona allo stesso modo in tutti i browser in cui sto testando, e successivamente IE si limita a stabilire le proprie regole. Questo è incredibilmente frustrante e spero davvero che stia solo facendo qualcosa di sbagliato e non è un problema intrinseco.


1
Sono stato in grado di aggirare il problema CSS spostando il mio <div>fuori dal blocco in cui si trovava e impostando un margine negativo. Non una soluzione aggraziata in alcun modo, ma tale è la vita quando si garantisce la compatibilità tra browser. Sarebbe comunque bello capire perché è così diverso.
maik,

Risposte:


9

So che questo è un vecchio thread, ma ho appena riscontrato lo stesso problema. Se si utilizza IE8, il problema potrebbe essere la sua Visualizzazione compatibilità. Per impostazione predefinita, i siti nella tua intranet locale - ma NON localhost - vengono visualizzati nella vista di compatibilità IE7. Maggiori informazioni qui:

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

Sfortunatamente, ciò non aiuta a sbarazzarsi della barra di scorrimento disabilitata, ma spiega la discrepanza.


È eccellente Grazie per aver trovato e pubblicato informazioni dettagliate sul problema.
maik,

1
Sembra che anche IE9 lo faccia. In Pagina> Finestra di dialogo Impostazioni vista compatibilità, deseleziona "Visualizza siti intranet in Vista compatibilità" e verrà visualizzato come su localhost.
Mike Caron,

7

Il problema risiede nelle impostazioni della vista di compatibilità IE8. Per impostazione predefinita, i siti Intranet (il tuo server) vengono visualizzati nella vista di compatibilità. Per sovrascrivere questo comportamento è necessario aggiungere il codice seguente al codice dietro la pagina aspx.

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

    base.OnPreInit(e);
}

Ha funzionato per me.


Questo va di pari passo con le cose sulla compatibilità citate sopra. Grazie per questa risposta!
Mak

1
haha ho appena avuto questo problema, e stavo andando qui per pubblicare un post pensando "la gente penserà che sono pazzo". Grazie mille!
NullOrEmpty,

In alternativa, è possibile aggiungere Response.AppendHeader("X-UA-Compatible", "IE=8");al Page_Loadmetodo nel Site.master.csfile.
Nick Chammas,

+1 Questa soluzione mi ha aiutato a risolvere il mio stesso problema, fantastico !!
Qualcuno il

2

In IE9, i siti in esecuzione localhostvengono automaticamente visualizzati in modalità di compatibilità. Per modificare questo comportamento (predefinito), procedere come segue:

  1. Se non attivato, attiva la barra degli strumenti Comando
  2. Fare clic su Pagina> Impostazioni per Modalità compatibilità
  3. Deseleziona "Visualizza intranetsite in modalità di compatibilità"

1

Ecco un post su StackOverflow su questo

sostanzialmente cambia la parte superiore del tuo layout HTML o MasterPage (dopo il <%@...%>) in:

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

Questo è stato di grande aiuto!
KFP,

0

CSS non dovrebbe essere influenzato dall'URL. Hai qualche possibilità di avere del testo nascosto con l'URL da qualche parte nel corpo che lo sta causando lo spostamento? Se visualizzi la fonte del file in entrambe le situazioni usando uno strumento come http://www.quickdiff.com/ , c'è qualcosa di diverso tra loro?


Questo è esattamente il pensiero che avevo, motivo per cui il problema sembra sfidare la logica. L'unica cosa che mi viene in mente è che IIS sta facendo qualcosa di speciale in base al fatto che la richiesta provenga da localhost o meno. Se uso localhost, 127.0.01, il mio indirizzo IPv4 o IPv6 viene visualizzato allo stesso modo (senza barra di scorrimento, ecc.). Se uso il nome host del mio computer o accedo ad esso da un altro computer, viene visualizzato con la barra di scorrimento. Inizialmente ho esaminato la fonte con i miei occhi e non ho visto alcuna differenza, e ho verificato che usando quickdiff.com. <3 IIS :(
maik,

Decisamente strano. Che ne dici di un quickdiff sui file CSS? L'altra cosa da controllare è firebug o fiddler2 per vedere se le intestazioni sono diverse. Ciò mostrerà ciò che IIS sta inviando nelle intestazioni.
Scott Forsyth - MVP

Parte del mio debug consisteva nello spostare quel piccolo CSS che avevo nel file aspx, quindi non c'è niente di speciale in questo reparto. Controllerò Fiddler e vedrò se riesco a vedere delle differenze.
maik,

Fiddler mostra differenze nelle intestazioni di richiesta e risposta. Non sembra nulla di spettacolare, ma forse IE sta prendendo una decisione di rendering basata su qualcosa lì ... Nelle intestazioni della richiesta, l'unica differenza è che nelle intestazioni di richiesta my_hostname, l'intestazione di autorizzazione viene prima dell'intestazione Host mentre è l'opposto nella richiesta localhost. Nelle intestazioni di risposta Persistent-Auth è impostato su false in my_hostname e true in localhost. Il token codificato in WWW-Authenticate è anche significativamente più lungo in my_hostname rispetto a localhost, ma il metodo è ancora Negozia.
maik,

Qualche possibilità che in IE il sito sia impostato su una zona diversa? cioè con un URL è attendibile e con un altro no? Ciò influirebbe solo su IE.
Scott Forsyth - MVP,

0

La correzione che @Claire applica anche a IE 11 . Avevo problemi in cui il CSS non veniva applicato quando si accedeva al sito tramite il nome host del server, ma localhost veniva visualizzato correttamente.

Aggiustare:

Internet Options -> Uncheck Display intranet sites in Compatibility View

Non sono sicuro del motivo per cui localhost non sia considerato un sito intranet .


-1

Giusto per affermare che stavo avendo un problema simile al PO e applicando il codice suggerito da Serj Sagan alla mia pagina principale del sito, ma ho cambiato IE = Edge in IE = 11, ora quando pubblicato tutto viene visualizzato come dovrebbe.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.