जब मैं पोर्ट 8080 पर अपने वेब ऐप को हिट करने की कोशिश करता हूं तो मुझे निम्नलिखित त्रुटि मिलती है
खराब अनुरोध - अमान्य होस्टनाम
HTTP त्रुटि 400। अनुरोध होस्टनाम अमान्य है।
मैं यह भी नहीं जानता कि इस समस्या का निदान कहाँ से शुरू करूँ
जवाबों:
क्या आपने जाँच की कि क्या बंधन IIS है? (inetmgr.exe) 8080 पर सभी होस्टनामों को स्वीकार करने के लिए इसे पंजीकृत नहीं किया जा सकता है।
उदाहरण के लिए, यदि आप इसे mysite.com:8080 के लिए सेट करते हैं और इसे लोकलहोस्ट पर हिट करते हैं: 8080, तो IIS को अनुरोध मिलेगा लेकिन मैच करने के लिए एक होस्टनाम बाइंडिंग नहीं है इसलिए यह अस्वीकार करता है।
उसके बाहर, आपको सर्वर पर IIS लॉग (C: \ inetpub \ log \ wmsvc #) की जांच करनी चाहिए और देखें कि क्या आप अपना अनुरोध देख रहे हैं। तब आपको पता चलेगा कि क्या यह आपके क्लाइंट या सर्वर पर ही समस्या है।
FWIW, यदि आप किसी भी होस्टनाम / आईपी को निर्देशित अनुरोधों की अनुमति देना चाहते हैं तो आप अपना बंधन इस तरह सेट कर सकते हैं:
<binding protocol="http" bindingInformation="*:80:*" />
मैं इस बंधन का उपयोग करता हूं ताकि मैं IE6 के साथ एक वीएम लोड कर सकूं और फिर अपने आवेदन को डीबग कर सकूं।
संपादित करें: IIS एक्सप्रेस डीबग करने के लिए उपयोग करते समय, इस विकल्प की कॉन्फ़िग फ़ाइल के लिए डिफ़ॉल्ट स्थान है
C:\Users\{User}\Documents\IISExpress\config\applicationhost.config
Microsoft का यह पृष्ठ स्थानीय नेटवर्क पर अन्य कंप्यूटरों से IIS सर्वर एक्सप्रेस तक पहुंच स्थापित करने का तरीका बताता है।
संक्षेप में:
1) विशेषाधिकारों के साथ कमांड प्रॉम्प्ट से:
netsh http add urlacl url=http://[your ip address]:8181/ user=everyone
2) उन्नत सुरक्षा के साथ विंडोज फ़ायरवॉल में, पोर्ट 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>
IPv6 पते के लिए बाध्य करने के लिए मत भूलना! मैं लोकलहोस्ट का उपयोग करके 127.0.0.1 पर एक साइट जोड़ने की कोशिश कर रहा था और खराब अनुरोध / अमान्य होस्टनाम त्रुटि मिली। जब मैंने लोकलहोस्ट को पिंग किया तो उसने :: 1 को हल कर दिया क्योंकि IPv6 को सक्षम किया गया था, इसलिए मुझे केवल समस्या को ठीक करने के लिए अतिरिक्त बंधन जोड़ना था।
इससे मेरी समस्या हल हो गई (मेरी खराब अंग्रेजी के लिए खेद है):
व्यवस्थापक और रन कमांड (वर्ग कोष्ठक के बिना) के रूप में खुला 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" />
"इंटरनेट सूचना सेवा (आईआईएस) प्रबंधक" खोलें (
इसे खोजने के लिए: टास्कबार में खोज में "विंडो सुविधाएँ चालू या बंद करें" लिखें और परिणाम खोलें और फिर चेकबॉक्स "इंटरनेट सूचना सेवा" की जाँच करें और इसे स्थापित करें):
"उन्नत सुरक्षा के साथ विंडोज फ़ायरवॉल" खोलें,
किया हुआ।
मुझे यकीन नहीं है कि अगर यह आपकी समस्या थी, लेकिन किसी के लिए भी जो अपने मशीन से अपने वेब एप्लिकेशन को एक्सेस करने की कोशिश कर रहा है और यह समस्या है:
सुनिश्चित करें कि आप 127.0.0.1
(aka localhost
) से जुड़ रहे हैं और अपने बाहरी आईपी पते से नहीं।
आपका URL कुछ इस तरह होना चाहिए http://localhost:8181/
या http://127.0.0.1:8181
और नहीं http://YourExternalIPaddress:8181/
।
जब आप अपने बाहरी आईपी पते से जुड़ते हैं, तो आप इंटरनेट से कनेक्ट होते हैं, जैसे कि आप एक अजनबी (या हैकर) थे।
हालाँकि, जब आप अपने लोकलहोस्ट से कनेक्ट होते हैं, तो आप स्थानीय रूप से खुद से कनेक्ट होते हैं और ब्लॉक की स्पष्ट रूप से आवश्यकता नहीं होती (और पूरी तरह से बचा जाता है)।
localhost
, यह वह है जो ( 127.0.0.1
) का जिक्र कर रहा है । मैं जो कुछ कह रहा हूं, वह उससे जुड़ा है न कि आपके बाहरी रूप से दिखाई देने वाले आईपी से। लोकलहोस्ट पर कोई निर्भरता नहीं है, यह सिर्फ एक पर्याय के रूप में उपयोग किया जाता है। मैं इसे स्पष्ट करने के लिए अपने उत्तर को संपादित करूँगा।
अपनी स्थानीय होस्ट फ़ाइल की जाँच करें (C: \ Windows \ System32 \ driver \ etc \ मेजबान उदाहरण के लिए)। मेरे मामले में मैंने पहले एक देव बॉक्स में एक URL को इंगित करने के लिए इसका इस्तेमाल किया था और फिर इसके बारे में भूल गया। जब मैंने उसी URL का पुन: उपयोग किया तो मुझे बैड रिक्वेस्ट (अमान्य होस्टनाम) मिलती रही क्योंकि ट्रैफ़िक गलत सर्वर पर जा रहा था।
मैंने एक नए सर्वर पर एप्लिकेशन को कॉपी करने के लिए msdeploy का उपयोग करने के बाद एक ही त्रुटि देखी। यह पता चला कि बाइंडिंग अभी भी पिछले सर्वर से आईपी पते का उपयोग कर रहे थे। तो, IIS बाइंडिंग में आईपी पते को दोबारा जांचें। (तथ्य के बाद स्पष्ट लगता है, लेकिन तुरंत मुझे इसकी जांच करने के लिए नहीं हुआ)।