เมื่อฉันพยายามกดเว็บแอปบนพอร์ต 8080 ฉันได้รับข้อผิดพลาดต่อไปนี้
คำขอไม่ถูกต้อง -
ข้อผิดพลาด HTTP ชื่อโฮสต์400 ไม่ถูกต้องชื่อโฮสต์ของคำขอไม่ถูกต้อง
ฉันไม่รู้ด้วยซ้ำว่าจะเริ่มวินิจฉัยปัญหานี้ได้ที่ไหน
เมื่อฉันพยายามกดเว็บแอปบนพอร์ต 8080 ฉันได้รับข้อผิดพลาดต่อไปนี้
คำขอไม่ถูกต้อง -
ข้อผิดพลาด HTTP ชื่อโฮสต์400 ไม่ถูกต้องชื่อโฮสต์ของคำขอไม่ถูกต้อง
ฉันไม่รู้ด้วยซ้ำว่าจะเริ่มวินิจฉัยปัญหานี้ได้ที่ไหน
คำตอบ:
คุณตรวจสอบการผูกเป็น IIS หรือไม่? (inetmgr.exe) อาจไม่ได้รับการลงทะเบียนเพื่อยอมรับชื่อโฮสต์ทั้งหมดใน 8080
ตัวอย่างเช่นหากคุณตั้งค่าสำหรับ mysite.com:8080 และกดที่ localhost: 8080 IIS จะได้รับคำขอ แต่ไม่มีการผูกชื่อโฮสต์ให้ตรงกันดังนั้นจึงปฏิเสธ
นอกจากนั้นคุณควรตรวจสอบบันทึก IIS (C: \ inetpub \ logs \ wmsvc #) บนเซิร์ฟเวอร์และดูว่าคุณเห็นคำขอของคุณหรือไม่ จากนั้นคุณจะทราบว่าปัญหาเกิดขึ้นกับไคลเอนต์ของคุณหรือบนเซิร์ฟเวอร์เอง
FWIW หากคุณต้องการเพียงแค่อนุญาตคำขอที่ส่งไปยังชื่อโฮสต์ / ip ใด ๆ คุณสามารถตั้งค่าการผูกของคุณได้ดังนี้:
<binding protocol="http" bindingInformation="*:80:*" />
ฉันใช้การผูกนี้เพื่อให้ฉันสามารถโหลด VM ด้วย IE6 จากนั้นดีบักแอปพลิเคชันของฉัน
แก้ไข: ในขณะที่ใช้ IIS Express เพื่อดีบักตำแหน่งเริ่มต้นสำหรับไฟล์กำหนดค่าของตัวเลือกนี้คือ
C:\Users\{User}\Documents\IISExpress\config\applicationhost.config
หน้านี้โดย Microsoft อธิบายวิธีตั้งค่าการเข้าถึง IIS Server Express จากคอมพิวเตอร์เครื่องอื่นบนเครือข่ายท้องถิ่น
โดยสังเขป:
1) จากพรอมต์คำสั่งพร้อมสิทธิ์ผู้ดูแลระบบ:
netsh http add urlacl url=http://[your ip address]:8181/ user=everyone
2) ใน Windows Firewall ที่มี Advanced Security ให้สร้างกฎขาเข้าใหม่สำหรับพอร์ต 8181 เพื่ออนุญาตการเชื่อมต่อภายนอก
3) ใน applicationhost.config ในโหนดสำหรับโครงการของคุณให้เพิ่ม:
<binding protocol="http" bindingInformation="*:8181:[your ip address]" />
อย่าเพิ่ม (ตามที่แนะนำในคำตอบอื่น):
<binding protocol="http" bindingInformation="*:8181:*" />
การผูกสัญลักษณ์แทนข้างต้นทำให้ฉันไม่สามารถเข้าถึงได้จาก http://192.168.1.6:8181/
netsh http delete urlacl url=http://[your ip address]:8181/
สำหรับVisual Studio 2017
และVisual Studio 2015
, IIS Express
การตั้งค่าจะถูกเก็บไว้ในที่ซ่อนอยู่.vs
ไดเรกทอรีและเส้นทางเป็นบางอย่างเช่นนี้.vs\config\applicationhost.config
เพิ่มผูกพันเช่นนี้การทำงานจะ
<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>
สิ่งนี้ช่วยแก้ปัญหาของฉันได้ (ขออภัยสำหรับภาษาอังกฤษที่ไม่ดีของฉัน):
เปิด cmd ในฐานะผู้ดูแลระบบและเรียกใช้คำสั่ง (ไม่มีวงเล็บเหลี่ยม):
netsh http add urlacl url=http://[ip adress]:[port]/ user=everyone
ในdocuments/iisexpress/config/applicationhost.config
และในโฟลเดอร์โปรเจ็กต์รูทของคุณในโฟลเดอร์ (ซ่อน): .vs/config/applicationhost.config
คุณต้องเพิ่มแถวในแท็ก "ไซต์":
<binding protocol="http" bindingInformation="*:8080:192.xxx.xxx.xxx" />
เปิด "internet information services (iis) manager"
(เพื่อค้นหา: ในการค้นหาในทาสก์บาร์ให้เขียน "Turn Window features on or off" และเปิดผลลัพธ์จากนั้นเลือกช่องทำเครื่องหมาย "internet information service" และติดตั้ง):
เปิด "Windows Firewall With Advanced Security"
เสร็จแล้ว
ฉันไม่แน่ใจว่านี่เป็นปัญหาของคุณหรือไม่ แต่สำหรับใครก็ตามที่พยายามเข้าถึงเว็บแอปพลิเคชันจากเครื่องของเขาและประสบปัญหานี้:
ตรวจสอบให้แน่ใจว่าคุณกำลังเชื่อมต่อกับ127.0.0.1
(akalocalhost
) ไม่ใช่กับที่อยู่ IP ภายนอกของคุณ
URL ของคุณควรจะเป็นสิ่งที่ชอบhttp://localhost:8181/
หรือhttp://127.0.0.1:8181
และไม่ได้ http://YourExternalIPaddress:8181/
เมื่อคุณเชื่อมต่อกับที่อยู่ IP ภายนอกคุณจะเชื่อมต่อกับคุณจากอินเทอร์เน็ตราวกับว่าคุณเป็นคนแปลกหน้า (หรือแฮ็กเกอร์)
อย่างไรก็ตามเมื่อคุณเชื่อมต่อกับโฮสต์ในพื้นที่ของคุณคุณจะเชื่อมต่อภายในเป็นตัวคุณเองและเห็นได้ชัดว่าบล็อกนั้นไม่จำเป็นต้องใช้ (& หลีกเลี่ยงโดยสิ้นเชิง)
localhost
สิ่งที่หมายถึง ( 127.0.0.1
) ทั้งหมดที่ฉันพูดคือเชื่อมต่อกับสิ่งนั้นไม่ใช่กับ IP ที่มองเห็นภายนอกของคุณ ไม่มีการพึ่งพา localhost แต่ใช้เป็นคำพ้องความหมาย ฉันจะแก้ไขคำตอบเพื่อให้ชัดเจนขึ้น
คุณสามารถใช้เครื่องมือ Visual Studio 2005/2008/2010 CMD เรียกใช้ในฐานะผู้ดูแลระบบและเขียน
aspnet_regiis -i
ในที่สุดฉันก็สามารถเรียกใช้แอปได้สำเร็จ
ตรวจสอบไฟล์โฮสต์ในเครื่องของคุณ (เช่น C: \ Windows \ System32 \ drivers \ etc \ hosts เป็นต้น) ในกรณีของฉันก่อนหน้านี้ฉันเคยใช้สิ่งนี้เพื่อชี้ URL ไปยังกล่อง dev และลืมไปแล้ว เมื่อฉันใช้ URL เดิมซ้ำฉันได้รับคำขอที่ไม่ถูกต้อง (ชื่อโฮสต์ไม่ถูกต้อง) เนื่องจากการรับส่งข้อมูลไปยังเซิร์ฟเวอร์ที่ไม่ถูกต้อง
ฉันได้รับข้อผิดพลาดนี้เมื่อพยายามเรียกใช้บริการเว็บโดยใช้ "localhost" ฉันแก้ไขโดยใช้ IP จริงแทน (192.168 ... )
ฉันเห็นข้อผิดพลาดเดียวกันนี้หลังจากใช้ msdeploy เพื่อคัดลอกแอปพลิเคชันไปยังเซิร์ฟเวอร์ใหม่ ปรากฎว่าการผูกยังคงใช้ที่อยู่ IP จากเซิร์ฟเวอร์ก่อนหน้านี้ ดังนั้นตรวจสอบที่อยู่ IP อีกครั้งในการผูก IIS (ดูเหมือนจะชัดเจนหลังจากความจริง แต่ไม่ได้เกิดขึ้นให้ฉันตรวจสอบในทันที)
ตรวจสอบ URL ที่แน่นอนที่คุณระบุอีกครั้ง ฉันเห็นข้อผิดพลาดนี้เมื่อฉันพลาดคำนำหน้าเส้นทางที่กำหนดใน ASP.NET ดังนั้นจึงไม่ทราบว่าจะกำหนดเส้นทางคำขอ
ตรวจสอบให้แน่ใจว่า IIS กำลังฟังพอร์ตของคุณ
ในกรณีของฉันนี่คือปัญหา ดังนั้นฉันต้องเปลี่ยนพอร์ตของฉันเป็นอย่างอื่นเช่น 8083 และมันก็แก้ไขปัญหานี้ได้