Khi tôi cố gắng truy cập ứng dụng web của mình trên cổng 8080, tôi gặp lỗi sau
Yêu cầu không hợp lệ -
Lỗi HTTP tên máy chủ không hợp lệ 400. Tên máy chủ yêu cầu không hợp lệ.
Tôi thậm chí không biết bắt đầu chẩn đoán vấn đề này từ đâu
Câu trả lời:
Bạn đã kiểm tra ràng buộc là IIS chưa? (inetmgr.exe) Nó có thể không được đăng ký để chấp nhận tất cả các tên máy chủ trên 8080.
Ví dụ: nếu bạn thiết lập nó cho mysite.com:8080 và nhấn nó tại localhost: 8080, IIS sẽ nhận được yêu cầu nhưng không có ràng buộc tên máy chủ để khớp nên nó từ chối.
Ngoài ra, bạn nên kiểm tra nhật ký IIS (C: \ inetpub \ logs \ wmsvc #) trên máy chủ và xem liệu bạn có thấy yêu cầu của mình hay không. Sau đó, bạn sẽ biết nếu đó là sự cố trên máy khách của bạn hoặc trên chính máy chủ.
FWIW, nếu bạn chỉ muốn cho phép các yêu cầu được chuyển hướng đến bất kỳ tên máy / ip nào thì bạn có thể đặt ràng buộc của mình như sau:
<binding protocol="http" bindingInformation="*:80:*" />
Tôi sử dụng ràng buộc này để tôi có thể tải một máy ảo với IE6 và sau đó gỡ lỗi ứng dụng của mình.
CHỈNH SỬA: Trong khi sử dụng IIS Express để gỡ lỗi, vị trí mặc định cho tệp cấu hình của tùy chọn này là
C:\Users\{User}\Documents\IISExpress\config\applicationhost.config
Đây trang của Microsoft mô tả làm thế nào để thiết lập quyền truy cập vào IIS Server Express từ các máy tính khác trên mạng nội bộ.
Tóm lại:
1) từ dấu nhắc lệnh với đặc quyền quản trị viên:
netsh http add urlacl url=http://[your ip address]:8181/ user=everyone
2) Trong Tường lửa của Windows với Bảo mật Nâng cao, hãy tạo quy tắc đến mới cho cổng 8181 để cho phép các kết nối bên ngoài
3) Trong applicationhost.config, trong nút cho dự án của bạn, hãy thêm:
<binding protocol="http" bindingInformation="*:8181:[your ip address]" />
KHÔNG thêm (như đã được đề xuất trong một câu trả lời khác):
<binding protocol="http" bindingInformation="*:8181:*" />
Liên kết ký tự đại diện ở trên đã phá vỡ quyền truy cập của tôi từ http://192.168.1.6:8181/
netsh http delete urlacl url=http://[your ip address]:8181/
Đối với Visual Studio 2017
và Visual Studio 2015
, IIS Express
cài đặt được lưu trữ trong .vs
thư mục ẩn và đường dẫn như thế này .vs\config\applicationhost.config
, thêm ràng buộc như bên dưới sẽ hoạt động
<bindings>
<binding protocol="http" bindingInformation="*:8802:localhost" />
<binding protocol="http" bindingInformation="*:8802:127.0.0.1" />
</bindings>
<bindings> <binding protocol="http" bindingInformation="localhost:8802:*" /> <binding protocol="http" bindingInformation="127.0.0.1:8802:*"/> </bindings>
Đừng quên liên kết với địa chỉ IPv6! Tôi đang cố gắng thêm một trang web trên 127.0.0.1 bằng cách sử dụng localhost và gặp lỗi yêu cầu không hợp lệ / tên máy chủ không hợp lệ. Khi tôi ping localhost, nó giải quyết thành :: 1 vì IPv6 đã được bật nên tôi chỉ cần thêm liên kết bổ sung để khắc phục sự cố.
Điều này đã giải quyết được vấn đề của tôi (xin lỗi vì tiếng Anh kém của tôi):
mở cmd với tư cách quản trị viên và chạy lệnh (Không có dấu ngoặc vuông):
netsh http add urlacl url=http://[ip adress]:[port]/ user=everyone
trong documents/iisexpress/config/applicationhost.config
và trong thư mục dự án gốc của bạn trong thư mục (ẩn): .vs/config/applicationhost.config
bạn cần thêm hàng vào thẻ "site":
<binding protocol="http" bindingInformation="*:8080:192.xxx.xxx.xxx" />
mở "trình quản lý dịch vụ thông tin internet (iis)"
(để tìm: trong tìm kiếm trên thanh tác vụ, viết "Bật hoặc tắt các tính năng của Window" và mở kết quả, sau đó đánh dấu vào hộp kiểm "dịch vụ thông tin internet" và cài đặt):
mở "Tường lửa Windows Với Bảo mật Nâng cao",
làm xong.
Tôi không chắc đây có phải là vấn đề của bạn hay không nhưng đối với bất kỳ ai đang cố gắng truy cập ứng dụng web của anh ấy từ máy của anh ấy và gặp sự cố này:
Đảm bảo rằng bạn đang kết nối với 127.0.0.1
(hay còn gọi là localhost
) chứ không phải với địa chỉ IP bên ngoài của mình.
URL của bạn nên được một cái gì đó giống như http://localhost:8181/
hay http://127.0.0.1:8181
và không http://YourExternalIPaddress:8181/
.
Khi bạn kết nối với địa chỉ IP bên ngoài của mình, bạn kết nối với bạn từ internet, như thể bạn là một người lạ (hoặc một tin tặc).
Tuy nhiên, khi bạn kết nối với localhost của mình, bạn kết nối cục bộ với tư cách là chính mình và khối này rõ ràng là không cần thiết (& tránh hoàn toàn).
localhost
, đó là những gì nó đang đề cập đến ( 127.0.0.1
). Tất cả những gì tôi đang nói là kết nối với nó chứ không phải với IP hiển thị bên ngoài của bạn. Không có sự phụ thuộc vào localhost, nó chỉ được sử dụng như một từ đồng nghĩa. Tôi sẽ chỉnh sửa câu trả lời của mình để làm rõ ràng hơn.
Kiểm tra tệp máy chủ cục bộ của bạn (ví dụ: C: \ Windows \ System32 \ drivers \ etc \ hosts). Trong trường hợp của tôi, trước đây tôi đã sử dụng điều này để trỏ một URL đến hộp dành cho nhà phát triển và sau đó quên mất nó. Sau đó, khi tôi sử dụng lại cùng một URL, tôi vẫn nhận được Yêu cầu sai (Tên máy chủ không hợp lệ) vì lưu lượng truy cập đến sai máy chủ.
Tôi đã gặp lỗi tương tự sau khi sử dụng msdeploy để sao chép ứng dụng sang máy chủ mới. Hóa ra các ràng buộc vẫn đang sử dụng địa chỉ IP từ máy chủ trước đó. Vì vậy, hãy kiểm tra kỹ địa chỉ IP trong các ràng buộc IIS. (Có vẻ rõ ràng sau thực tế, nhưng không xảy ra ngay lập tức với tôi để kiểm tra nó).