IISでURLとホスト名でlocalhostを使用するとページが異なるように表示される


8

IISで(まだ別の)奇妙な問題が発生しています。ローカルマシンで設計したASPXページを表示するとhttp://localhost/page.aspx、ページを参照して期待どおりに表示されます(IE、Firefox、Chromeでも同じように表示されます。ページを変更localhostするmy_hostnameと、垂直スクロールバーが無効になって表示されます。

この動作は、自分のサイトをライブサーバーに公開し、同じ不一致があったときに最初に気づきました。壁に頭をぶつけた後、私は上記のことを試し、私の「問題」を再現することができました。それで、私はあなたたちに目を向けます。

これは実際には問題ではありません(ブラウザー間の不整合を保存するため)。これは、「絶対」に配置さ<div>れ、本来のように中央に配置されるのではなく、途中で画面の外に移動します(他の方法で見た場合)。IEでアドレスがlocalhost 以外の場合を除く)。


別のテストとして、新しいaspxページをプロジェクトに追加し、デフォルトコードを追加または変更しませんでした。localhostを使用してページを参照すると、スクロールバーがありません。my_hostnameを使用してページを参照すると、スクロールバーが表示されます。違いは何でも、IEのCSSの処理が台無しになり、最初はすべてがテストしているすべてのブラウザーで同じように機能し、その後IEは独自のルールを構成するだけです。これは信じられないほどイライラさせられ、私は私が何か間違ったことをしていて、それが本質的な問題ではないことを本当に望んでいます。


1
私は、CSSの問題を回避し<div>、ブロックを外して、負のマージンを設定しました。決して優雅な修正ではありませんが、クロスブラウザの互換性を保証する場合、それは人生です。それがなぜそんなに違うのを理解することはそれでもいいでしょう。
maik

回答:


9

これは古いスレッドであることはわかっていますが、同じ問題が発生しました。IE8を使用している場合、問題はその互換表示である可能性があります。デフォルトでは、ローカルイントラネット内のサイト(localhostではなく)がIE7互換ビューに表示されます。詳細はこちら:

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

残念ながら、それは無効にされたスクロールバーを取り除くのに役立ちませんが、それは矛盾を説明します。


それは素晴らしいです。問題の洞察を見つけて投稿していただきありがとうございます。
maik

1
IE9もそれを行うようです。[ページ]> [互換表示設定]ダイアログで、[イントラネットサイトを互換表示で表示する]チェックボックスをオフにすると、ローカルホストと同じようにレンダリングされます。
Mike Caron

7

問題は、IE8互換ビュー設定にあります。既定では、イントラネットサイト(サーバー)は互換表示に表示されます。この動作をオーバーライドするには、aspxページの背後にあるコードに次のコードを追加する必要があります。

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

    base.OnPreInit(e);
}

それは私のために働いた。


これは、上記のクレアの互換性の問題にぴったりです。この回答をありがとう!
maik

1
ははは、この問題が発生したばかりで、私は「人々は私が正気でないと思うだろう」と思って投稿するためにここに向かっていた。どうもありがとう!
NullOrEmpty 2011

別の方法として、あなたは追加することができますResponse.AppendHeader("X-UA-Compatible", "IE=8");Page_Load、あなたのメソッドSite.master.csファイル。
Nick Chammas

+1このソリューションは、同じ問題を解決するのに役立ちました。
誰かが

2

IE9では、実行中のサイトlocalhostは互換モードで自動的にレンダリングされます。これ(デフォルト)の動作を変更するには、次のようにします。

  1. アクティブ化されていない場合は、ツールバーをアクティブ化しますコマンド
  2. [ページ]> [互換モードの設定]をクリックします
  3. 「互換性モードでイントラネットサイトを表示する」のチェックを外します


0

CSSはURLの影響を受けません。本体のどこかにURLのある隠しテキストがあり、それがシフトしている可能性はありますか?http://www.quickdiff.com/のようなツールを使用して両方の状況でファイルのソースを表示する場合、それらの間に何か違いはありますか?


それが私が持っていた正確な考えであり、それが問題が論理を無視するように見える理由です。私が思いつくことができる唯一のことは、IISが要求がlocalhostから来ているかどうかに基づいて特別なことをしているということです。localhost 127.0.01を使用している場合、IPv4アドレスまたはIPv6アドレスを使用すると、同じように表示されます(スクロールバーなどなし)。コンピュータのホスト名を使用したり、別のコンピュータからアクセスしたりすると、スクロールバーでレンダリングされます。最初はソースを目で確認しましたが、違いは見られず、quickdiff.comを使用して確認しました。<3 IIS :(
maik 2010年

間違いなく奇妙です。cssファイルのquickdiffはどうですか?確認するもう1つのことは、ヘッダーが異なるかどうかを確認するためのfirebugまたはfiddler2です。これにより、IISがヘッダーで送信しているものが表示されます。
スコットフォーサイス-MVP 2010年

私のデバッグの一部は、代わりに私が持っていた小さなCSSをaspxファイルに移動することでしたので、その部門では特別なことは何もありません。Fiddlerをチェックして、違いがあるかどうかを確認します。
maik

Fiddlerは、要求ヘッダーと応答ヘッダーの違いを示しています。見た目は壮観ではありませんが、IEがそこに基づいてレンダリングを決定している可能性があります...リクエストヘッダーでの唯一の違いは、my_hostnameリクエストヘッダーでは、AuthorizationヘッダーがHostヘッダーの前にあることです。 localhostリクエストでは反対です。応答ヘッダーでは、Persistent-Authがmy_hostnameでfalseに設定され、localhostでtrueに設定されています。WWW-Authenticateのエンコードされたトークンも、my_hostnameではlocalhostよりも大幅に長くなりますが、メソッドは依然としてネゴシエートされます。
maik

IEでサイトが別のゾーンに設定されている可能性はありますか?つまり、あるURLでは信頼され、別のURLでは信頼されないのでしょうか。ただし、IEにのみ影響します。
スコットフォーサイス-MVP 2010年

0

@ClaireがIE 11にも適用する修正。サーバーのホスト名を介してサイトにアクセスするときにcssが適用されない問題がありましたが、localhostは正常に表示されました。

修正するには:

Internet Options -> Uncheck Display intranet sites in Compatibility View

localhostイントラネットサイトと見なされない理由がわかりません。


-1

OPと同様の問題があり、Serj Saganがサイトマスターページに提案したコードを適用していたが、発行時にIE = EdgeをIE = 11に変更すると、すべて正常に表示されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.