IIS menampilkan halaman secara berbeda ketika localhost digunakan dalam URL vs nama host

8

Saya mengalami masalah aneh dengan IIS. Saat melihat halaman ASPX saya sudah dirancang pada mesin lokal saya dengan browsing ke http://localhost/page.aspxhalaman terlihat seperti yang diharapkan (dan terlihat sama di IE, Firefox dan Chrome. Jika saya perubahan localhostke my_hostnamehalaman tersebut diberikan dengan scroll bar vertikal dinonaktifkan.

Perilaku ini pertama kali diperhatikan ketika saya menerbitkan situs saya ke server langsung kami dan melihat perbedaan yang sama. Setelah membenturkan kepala ke dinding, saya mencoba apa yang saya jelaskan di atas dan mampu menduplikasi "masalah" saya. Maka dengan itu, saya beralih kepada kalian.

Ini tidak akan benar-benar menjadi masalah (kecuali untuk ketidakkonsistenan lintas-browser) kecuali bahwa ini mengacaukan posisi "absolut" yang <div>memindahkannya sebagian dari layar alih-alih dipusatkan seperti seharusnya (dan bila dilihat dengan cara lain kecuali di IE ketika alamat itu tidak lain adalah localhost).


Sebagai tes lain saya menambahkan halaman aspx baru ke proyek saya dan tidak menambah atau mengubah kode default apa pun. Jika saya menjelajah ke halaman menggunakan localhost tidak ada scrollbar. Jika saya menjelajah ke halaman menggunakan my_hostname, scrollbar ada di sana. Apa pun perbedaannya, hal itu membuat pemrosesan IE dari CSS menjadi kacau, ke titik di mana semuanya bekerja pada semua browser yang saya uji, dan setelah itu IE hanya membuat aturan sendiri. Ini sangat membuat frustrasi dan saya benar-benar berharap saya hanya melakukan sesuatu yang salah dan itu bukan masalah yang melekat.

maik
sumber
1
Saya sudah bisa mengatasi masalah CSS dengan memindahkan saya <div>keluar dari blok itu dan menetapkan margin negatif. Bukan perbaikan yang anggun dengan cara apa pun, tetapi itu adalah hidup ketika memastikan kompatibilitas lintas-browser. Masih bagus untuk mencari tahu mengapa itu sangat berbeda.
maik

Jawaban:

9

Saya tahu ini adalah utas lama, tetapi saya baru saja menemukan masalah yang sama. Jika Anda menggunakan IE8, masalahnya mungkin adalah Tampilan Kompatibilitasnya. Secara default, situs di intranet lokal Anda - tetapi BUKAN localhost - disajikan dalam tampilan kompatibilitas IE7. Info lebih lanjut di sini:

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

Sayangnya, itu tidak membantu menghilangkan scrollbar yang dinonaktifkan, tetapi hal itu menjelaskan perbedaan.

Claire
sumber
Itu luar biasa. Terima kasih telah menemukan dan memposting wawasan tentang masalah ini.
maik
1
Tampaknya IE9 juga melakukannya. Di Halaman> dialog Pengaturan Tampilan Kompatibilitas, hapus centang "Tampilkan situs intranet di Tampilan Kompatibilitas" dan itu akan ditampilkan seperti di localhost.
Mike Caron
7

Masalahnya terletak pada pengaturan tampilan kompatibilitas IE8. Secara default, situs intranet (server Anda) ditampilkan dalam tampilan kompatibilitas. Untuk mengganti perilaku ini, Anda harus menambahkan kode berikut ke kode Anda di belakang halaman aspx Anda.

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

    base.OnPreInit(e);
}

Ini berhasil untuk saya.

Yaron
sumber
Ini berjalan seiring dengan hal-hal kompatibilitas yang disebutkan Claire di atas. Terima kasih atas jawaban ini!
maik
1
haha saya baru saja mendapat masalah ini, dan saya menuju ke sini untuk meletakkan sebuah pos berpikir "orang-orang akan berpikir saya gila". Terima kasih banyak!
NullOrEmpty
Sebagai alternatif, Anda dapat menambahkan Response.AppendHeader("X-UA-Compatible", "IE=8");ke Page_Loadmetode dalam Anda Site.master.csberkas.
Nick Chammas
+1 Solusi ini membantu saya untuk menyelesaikan masalah saya yang sama, luar biasa !!
Seseorang
2

Di IE9, situs yang berjalan localhostsecara otomatis ditampilkan dalam Mode Kompatibilitas. Untuk mengubah perilaku (default) ini, lakukan ini:

  1. Jika tidak diaktifkan, aktifkan Command toolbar
  2. Klik Halaman> Pengaturan untuk Compabilitymode
  3. Hapus tanda centang "Tampilkan intranet dalam mode compability"
Techek
sumber
1

Berikut posting di StackOverflow tentang ini

pada dasarnya ubah bagian atas Layout HTML atau MasterPage Anda (setelah <%@...%>) menjadi:

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
Serj Sagan
sumber
Ini sangat membantu!
KFP
0

CSS seharusnya tidak terpengaruh oleh URL. Apakah Anda memiliki teks tersembunyi dengan URL di suatu tempat di tubuh yang menyebabkannya bergeser? Jika Anda melihat sumber file di kedua situasi menggunakan alat seperti http://www.quickdiff.com/ , apakah ada yang berbeda di antara mereka?

Scott Forsyth - MVP
sumber
Itulah pemikiran persis yang saya miliki, itulah sebabnya masalah muncul untuk menentang logika. Satu-satunya hal yang dapat saya lakukan adalah bahwa IIS melakukan sesuatu yang istimewa berdasarkan apakah permintaan tersebut berasal dari localhost atau tidak. Jika saya menggunakan localhost, 127.0.01, alamat IPv4 saya atau alamat IPv6 yang dibuatnya sama (tanpa scrollbar, dll.). Jika saya menggunakan nama host komputer saya atau mengaksesnya dari komputer lain, ia ditampilkan dengan scrollbar. Awalnya saya memeriksa sumber dengan mata saya dan tidak melihat perbedaan, dan hanya memverifikasi menggunakan quickdiff.com. <3 IIS :(
maik
Sangat aneh. Bagaimana dengan quickdiff pada file css? Hal lain yang perlu diperiksa adalah pembakar atau fiddler2 untuk melihat apakah header berbeda. Itu akan menunjukkan apa yang dikirim IIS di header.
Scott Forsyth - MVP
Sebagian dari debugging saya adalah memindahkan sedikit CSS yang saya miliki ke file aspx, jadi tidak ada yang istimewa yang terjadi di departemen itu. Saya akan memeriksa Fiddler dan melihat apakah saya dapat melihat perbedaan.
maik
Fiddler menunjukkan perbedaan dalam header permintaan dan respons. Itu tidak terlihat seperti sesuatu yang spektakuler, tapi mungkin IE membuat keputusan rendering berdasarkan sesuatu di sana ... Dalam header permintaan, satu-satunya perbedaan adalah bahwa dalam header permintaan my_hostname, header Otorisasi datang sebelum header Host sementara itu sebaliknya dalam permintaan localhost. Dalam header tanggapan Persistent-Auth diatur ke false di my_hostname dan true di localhost. Token yang disandikan di WWW-Otentikasi juga secara signifikan lebih lama di my_hostname daripada localhost, tetapi metode ini masih Bernegosiasi.
maik
Adakah kemungkinan bahwa di IE situs diatur ke zona yang berbeda? yaitu dengan satu URL yang tepercaya dan yang lainnya bukan? Itu hanya akan mempengaruhi IE.
Scott Forsyth - MVP
0

Perbaikan yang @Claire berlaku untuk IE 11 juga. Saya mengalami masalah ketika css tidak diterapkan saat mengakses situs melalui nama host server, tetapi localhost ditampilkan dengan baik.

Memperbaiki:

Internet Options -> Uncheck Display intranet sites in Compatibility View

Saya tidak yakin mengapa localhost tidak dianggap sebagai situs intranet .

Daniel Orlan
sumber
-1

Hanya untuk menyatakan saya mengalami masalah yang sama seperti OP dan menerapkan kode Serj Sagan menyarankan untuk halaman master situs saya tetapi mengubah IE = Edge ke IE = 11, sekarang ketika diterbitkan semuanya menampilkan sebagaimana mestinya.

Badvoc
sumber