IIS hiển thị trang khác nhau khi localhost được sử dụng trong URL so với tên máy chủ


8

Tôi đang gặp (một vấn đề khác) với IIS. Khi xem trang ASPX tôi đã thiết kế trên máy cục bộ của mình bằng cách duyệt đến http://localhost/page.aspxtrang trông như mong đợi (và trông giống như trong IE, Firefox và Chrome. Nếu tôi đổi localhostsang my_hostnametrang sẽ được hiển thị với thanh cuộn dọc bị vô hiệu hóa.

Hành vi được chú ý đầu tiên khi tôi xuất bản trang web của mình lên máy chủ trực tiếp của chúng tôi và thấy sự khác biệt tương tự. Sau khi đập đầu vào tường, tôi đã thử những gì tôi mô tả ở trên và có thể nhân đôi "vấn đề" của mình. Vì vậy, với điều đó, tôi chuyển sang các bạn.

Đây thực sự không phải là một vấn đề (tiết kiệm cho sự không nhất quán của trình duyệt chéo) ngoại trừ việc điều này tạo ra một vị trí "tuyệt đối" <div>di chuyển nó ra khỏi màn hình thay vì ở giữa như vậy (và khi được xem theo bất kỳ cách nào khác ngoại trừ trong IE khi địa chỉ là bất cứ thứ gì ngoại trừ localhost).


Như một thử nghiệm khác, tôi đã thêm một trang aspx mới vào dự án của mình và không thêm hoặc thay đổi bất kỳ mã mặc định nào. Nếu tôi duyệt đến trang bằng localhost thì không có thanh cuộn. Nếu tôi duyệt đến trang bằng my_hostname thì thanh cuộn sẽ ở đó. Dù có sự khác biệt gì đi nữa thì việc xử lý CSS của IE trở nên khó khăn, đến mức lúc đầu mọi thứ đều hoạt động giống nhau trong tất cả các trình duyệt mà tôi đang thử nghiệm, và sau đó IE chỉ tạo ra các quy tắc riêng. Điều này là vô cùng khó chịu và tôi thực sự hy vọng tôi chỉ làm sai điều gì đó và nó không phải là một vấn đề cố hữu.


1
Tôi đã có thể giải quyết vấn đề CSS bằng cách di chuyển <div>ra khỏi khối mà nó đang ở và đặt lề âm. Không phải là một sửa chữa duyên dáng bằng bất kỳ phương tiện nào, nhưng đó là cuộc sống khi đảm bảo khả năng tương thích giữa các trình duyệt. Nó vẫn sẽ là tốt đẹp để tìm hiểu tại sao nó rất khác nhau.
maik

Câu trả lời:


9

Tôi biết đây là một chủ đề cũ, nhưng tôi chỉ gặp vấn đề tương tự. Nếu bạn đang sử dụng IE8, vấn đề có thể là Chế độ xem tương thích của nó. Theo mặc định, các trang web trong mạng nội bộ cục bộ của bạn - nhưng KHÔNG phải localhost - được hiển thị trong chế độ xem tương thích IE7. Thêm thông tin ở đây:

http://msdn.microsoft.com/en-us/l Library / cc288325% 28VS85% 29.aspx

Thật không may, điều đó không giúp thoát khỏi thanh cuộn bị vô hiệu hóa, nhưng nó giải thích sự khác biệt.


Thật tuyệt vời. Cảm ơn đã tìm và đăng cái nhìn sâu sắc về vấn đề này.
maik

1
Có vẻ như IE9 cũng làm điều đó. Trong hộp thoại Cài đặt Chế độ xem Tương thích, bỏ chọn "Hiển thị các trang web mạng nội bộ trong Chế độ xem Tương thích" và nó sẽ hiển thị giống như trên localhost.
Mike Caron

7

Vấn đề nằm trong cài đặt chế độ xem tương thích IE8. Theo mặc định, các trang web mạng nội bộ (máy chủ của bạn) được hiển thị trong chế độ xem tương thích. Để ghi đè hành vi này, bạn nên thêm mã sau vào mã phía sau trang aspx của mình.

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

    base.OnPreInit(e);
}

Nó làm việc cho tôi.


Điều này đúng với các công cụ tương thích mà Claire đã đề cập ở trên. Cảm ơn câu trả lời này!
maik

1
haha Tôi vừa gặp vấn đề này, và tôi đang hướng đến đây để đăng một bài viết với suy nghĩ "mọi người sẽ nghĩ tôi mất trí". Cảm ơn rất nhiều!
NullOrEmpty

Thay phiên, bạn có thể thêm Response.AppendHeader("X-UA-Compatible", "IE=8");vào Page_Loadphương thức trong Site.master.cstệp của bạn .
Nick Chammas

+1 Giải pháp này đã giúp tôi giải quyết vấn đề tương tự, thật tuyệt vời !!
Ai đó

2

Trong IE9, các trang web đang chạy localhostđược tự động hiển thị ở Chế độ tương thích. Để thay đổi hành vi (mặc định) này, hãy làm điều này:

  1. Nếu không được kích hoạt, kích hoạt thanh công cụ Lệnh
  2. Nhấp vào Trang> Cài đặt cho Compabilitymode
  3. Bỏ chọn "Hiển thị mạng nội bộ trong chế độ tương thích"


0

CSS không nên bị ảnh hưởng bởi URL. Bất kỳ cơ hội nào bạn có văn bản ẩn với URL ở đâu đó trong cơ thể đang khiến nó thay đổi? Nếu bạn xem nguồn của tệp trong cả hai tình huống bằng cách sử dụng một công cụ như http://www.quickdiff.com/ , thì có gì khác nhau giữa chúng không?


Đó là suy nghĩ chính xác mà tôi có, đó là lý do tại sao vấn đề xuất hiện để thách thức logic. Điều duy nhất tôi có thể đưa ra là IIS đang làm một điều gì đó đặc biệt dựa trên việc yêu cầu có đến từ localhost hay không. Nếu tôi sử dụng localhost, 127.0.01, địa chỉ IPv4 hoặc địa chỉ IPv6 của tôi, nó sẽ hiển thị giống nhau (không có thanh cuộn, v.v.). Nếu tôi sử dụng tên máy chủ của máy tính hoặc truy cập nó từ máy tính khác, nó sẽ hiển thị với thanh cuộn. Ban đầu tôi đã kiểm tra nguồn bằng mắt và không thấy bất kỳ sự khác biệt nào, và chỉ xác minh rằng sử dụng quickdiff.com. <3 IIS :(
maik

Chắc chắn là lạ. Làm thế nào về một quickdiff trên các tập tin css? Một thứ khác để kiểm tra là fireorms hoặc fiddler2 để xem các tiêu đề có khác nhau không. Điều đó sẽ hiển thị những gì IIS đang gửi trong các tiêu đề.
Scott Forsyth - MVP

Thay vào đó, một phần trong quá trình sửa lỗi của tôi đã chuyển những CSS nhỏ mà tôi có vào tệp aspx, vì vậy không có gì đặc biệt xảy ra trong bộ phận đó. Tôi sẽ kiểm tra Fiddler và xem liệu tôi có thể thấy bất kỳ sự khác biệt nào không.
maik

Fiddler cho thấy sự khác biệt trong các tiêu đề yêu cầu và phản hồi. Nó trông không giống bất cứ thứ gì ngoạn mục, nhưng có lẽ IE đang đưa ra quyết định kết xuất dựa trên thứ gì đó ở đó ... Trong các tiêu đề yêu cầu, sự khác biệt duy nhất là trong các tiêu đề yêu cầu my_hostname, tiêu đề Ủy quyền xuất hiện trước tiêu đề Máy chủ trong khi đó ngược lại trong yêu cầu localhost. Trong các tiêu đề phản hồi, Persistent-Auth được đặt thành false trong my_hostname và true trong localhost. Mã thông báo được mã hóa trong WWW-xác thực cũng dài hơn đáng kể trong my_hostname so với localhost, nhưng phương thức vẫn là Đàm phán.
maik

Bất kỳ cơ hội nào trong IE trang web được đặt thành một khu vực khác nhau? tức là với một URL, nó có đáng tin cậy không và với một URL khác thì không? Điều đó sẽ chỉ ảnh hưởng đến IE.
Scott Forsyth - MVP

0

Bản sửa lỗi mà @Claire cũng áp dụng cho IE 11 . Tôi đã gặp sự cố khi css không được áp dụng khi truy cập trang web thông qua tên máy chủ của máy chủ, nhưng localhost hiển thị tốt.

Sửa chữa:

Internet Options -> Uncheck Display intranet sites in Compatibility View

Tôi không chắc chắn tại sao localhost không được coi là một trang web mạng nội bộ .


-1

Chỉ cần nói rằng tôi gặp vấn đề tương tự như OP và áp dụng mã Serj Sagan đề xuất cho trang chủ trang web của tôi nhưng đã thay đổi IE = Edge thành IE = 11, bây giờ khi xuất bản tất cả sẽ hiển thị như bình thường.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.