IISExpress दूरस्थ मशीनों से 503 त्रुटि देता है


183

मैं अपने स्थानीय नेटवर्क पर कुछ अन्य मशीनों / उपकरणों के साथ एक स्थानीय IISExpress उदाहरण में चलने वाली वेबसाइट का परीक्षण करने का प्रयास कर रहा हूं। मैं Win7 प्रो चला रहा हूं।

जब मैं पहली बार अपने मशीन को अपने स्थानीय नेटवर्क खंड पर किसी अन्य मशीन से ब्राउज़ करने का प्रयास करता हूं, तो मुझे 400 त्रुटि मिलती है: होस्टनाम अमान्य है।

मैं समझता हूं कि मुझे एलीवेटेड कमांड प्रॉम्प्ट पर कमांड के साथ एसीएल को रिमोट एक्सेस देने की आवश्यकता है:

netsh http add urlacl url=http://mymachinename:50333/ user=everyone

अब मुझे एक 503 सेवा उपलब्ध है जो अनुपलब्ध त्रुटि है।

विंडोज फ़ायरवॉल वर्तमान में बंद है, और मैं पते के साथ अपने स्थानीय IISExpress उदाहरण ब्राउज़ करने में सक्षम हूं http://localhost:50333

इस कॉन्फ़िगरेशन पहेली का अंतिम टुकड़ा क्या है?


1
यदि आप अपने कंप्यूटर http://mymachinename:50333/ से ब्राउज़ करते हैं तो क्या होता है ?
कर्नल पैनिक

1
समय सुलझा ली गई है। Vikomall से स्वीकृत उत्तर देखें
जेफ फ्रिट्ज

1
इसके बारे में गहन चर्चा यहां करें: hanselman.com/blog/…
क्रिस मोसचिनी

जवाबों:


270

ऐसा लगता है कि आप applicationhost.config फ़ाइल में एक बाध्यकारी जानकारी प्रविष्टि को याद कर रहे हैं।

  1. अपनी Applicationhost.config फ़ाइल खोलें। संभावित स्थान हैं:

    • %userprofile%\Documents\IISExpress\config\applicationhost.config
    • $(solutionDir)\.vs\config\applicationhost.config (VS2015)
    • असफल iisexpress.exeहोना , आउटपुट का निरीक्षण सुनिश्चित करने से करता है।
  2. अपनी वेबसाइट प्रविष्टि का पता लगाएँ और अपने मशीन के नाम के साथ बाध्यकारी जोड़ें

         <binding protocol="http" bindingInformation=":50333:your-machine-name" />
    
  3. IIS एक्सप्रेस को पुनरारंभ करें


9
कोई बात नहीं। विज़ुअल स्टूडियो ने आइटम के लिए डुप्लिकेट कॉन्फ़िगरेशन प्रविष्टि बनाई। मैंने इसे हटा दिया और यह काम कर गया।
नजूलिलो

3
IIS एक्सप्रेस हमेशा उस पथ पर कॉन्फ़िग फ़ाइल का उपयोग नहीं करता है। आउटपुट को iisexpress.exeध्यान से पढ़ें यह देखने के लिए कि कौन सी कॉन्फ़िग फ़ाइल इसका उपयोग कर रही है।
कर्नल पैनिक

5
मुख्य बिंदु 3 आइटम, IIS एक्सप्रेस पुनरारंभ करें! अपने सिस्टम-ट्रे में आइकन का पता लगाएँ और इसे फिर से चालू करने के लिए मजबूर करने के लिए रोकें। यकीन नहीं होता अगर कोई और सुरुचिपूर्ण तरीका है। लेकिन यह मेरे लिए काम किया। धन्यवाद!
सीनेटर

9
यदि आप प्रत्येक होस्टनाम / ipaddress संयोजन को जोड़ने के लिए बहुत आलसी हैं, तो "your-machine-name" के बजाय * का उपयोग करें
StarQuake

4
एक और संकेत: यदि आप IISExpress के सिस्टरे आइकन पर राइट-क्लिक करते हैं, तो आप "सभी एप्लिकेशन दिखाएं" का चयन कर सकते हैं, जो उन सभी एप्लिकेशनों को दिखाते हुए एक डायलॉग खोलेगा जो आप वर्तमान में स्थानीय रूप से चला रहे हैं। वांछित एप्लिकेशन पर राइट-क्लिक करें (बाएं-क्लिक न करें या यह ब्राउज़र को खोल देगा), फिर आपको नीचे "पथ" और "कॉन्फ़िगरेशन" दिखाई देगा। "कॉन्फ़िग" पर बायाँ-क्लिक करें और यह संबंधित Applicationhost.config फ़ाइल को खोलेगा जहाँ आपको ऊपर बताए अनुसार बाइंडिंग जोड़ने / संपादित करने की आवश्यकता है। वर्तमान कॉन्फ़िगरेशन का पता लगाने का यह एक आसान तरीका है।
मैट

30

केवल 1 चीज थी जो मेरे लिए काम की थी।

का उपयोग करना *:portnumber:*अच्छा नहीं था। हां, ऐसा करने और यह सुनिश्चित करने के बाद कि विंडोज फ़ायरवॉल खुला था, मैं पोर्ट से जुड़ सकता था, लेकिन मुझे अभी भी "503" त्रुटि मिली।

मैंने स्थानीय रूप से कुछ चीजों का परीक्षण किया, और पता चला कि केवल http: // localhost ने काम किया। वास्तविक आईपी पते का उपयोग करना (127.0.0.1 नहीं, लेकिन, उदाहरण के लिए, 192.168.1.50), फिर भी स्थानीय मशीन पर 503 भी लौटा दिया। मैंने बाइंडिंग में असली होस्ट नाम का उपयोग करने की कोशिश की, लेकिन IIS एक्सप्रेस ने शुरू करने से इनकार कर दिया। इससे वास्तव में कुछ हो सकता है कि मेजबान नाम का समाधान कैसे किया जाए। मैंने उसे आगे नहीं बढ़ाया।

अंत में, मैं इस विन्यास का उपयोग कर समाप्त हुआ:

<binding protocol="http" bindingInformation="*:53351:localhost" />
<binding protocol="http" bindingInformation="192.168.1.50:53351:*" />

इस तरह, मैं एक रिमोट मशीन का उपयोग करके कनेक्ट करने में सक्षम था http://192.168.1.50:53351


मैंने इस सटीक त्रुटि को मारा, लेकिन वर्तमान आईपी को कॉन्फ़िगरेशन में हार्ड-कोड नहीं करना चाहता था, क्योंकि यह बदल सकता है। मैंने पाया कि वाइल्डकार्ड आईपी और होस्टनाम भागों पर काम करता है, इसलिए मैं इसके साथ समाप्त हो गया: <binding protocol="https" bindingInformation="*:44300:*" /> <binding protocol="http" bindingInformation="*:8888:*" /> संपादित करें: वास्तव में एसओ मार्कडाउन को समझने की कोशिश की, मैंने छोड़ दिया :)।
ब्रायन बार्कर

19

इस तरह के एक पूर्ण विषय पर 3h से अधिक बर्बाद करने के बाद मैंने अपना सेटअप आपके साथ साझा करने का निर्णय लिया। मेरा कॉन्फ़िगरेशन विजुअल एक्सप्रेस 2012 है विंडोज़ 8 पर वेब अपडेट 4 के लिए। यह मेरा पहला अध्ययन (कम से कम 8 साल) के बाद से एमएस वीएस पर वापस आ गया है और अब मुझे यकीन है कि लिनक्स नियम हैं। Django पर इस तरह के सेटअप ने मुझे खोज के 10min दस्तावेज ले लिए।

  1. परीक्षण के लिए फ़ायरवॉल बंद करें

    netsh advfirewall set allprofiles state off
    
  2. मेरे मामले में सेटअप बाइंडिंग स्थानीय पता स्थानीय है = 192.168.1.102 (क्योंकि लिंक में गैर-डोमेन नहीं हो सकता है, mylocaldomain.com के बजाय नीचे इसका उपयोग करें, स्टैकओवरफ़्लो पॉलिसी देखें) Documents\IISExpress\config\applicationhost.config

    <bindings>
        <binding protocol="http" bindingInformation="*:53351:mylocaldomain.com" />
        <binding protocol="http" bindingInformation="*:53351:localhost" />
    </bindings>
    
  3. ISS एक्सप्रेस सेवा के लिए स्वचालित रूप से ऑटोरन जोड़ें

    <site name="NeuronCharts" id="2" serverAutoStart="true">
    
  4. Http सर्वर में कुछ अजीब नियम जोड़ें (मुझे अभी तक नहीं पता है कि क्या यह गलत है)

    netsh http add urlacl url=http://mylocaldomain.com:53351/ user=everyone
    
  5. IISExpress को मैन्युअल रूप से VS IDE से न चलाएं

  6. आप देखेंगे कि ISSExpress बाइंडिंग दर्ज कर रहा है
  7. रन ब्राउज़र http://mylocaldomain.com:53351 अगर यह काम कर रहा है तो हम फ़ायरवॉल नियम जोड़ सकते हैं
  8. फ़ायरवॉल नियम जोड़ें

    netsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=53351 remoteip=any action=allow
    

यदि आप स्थानीय दुनिया से स्थानीय नेटवर्क के उपयोग के लिए उपयोग करना चाहते हैं तो किसी को भी रिमोट सेट करें

  1. फ़ायरवॉल शुरू करो

    netsh advfirewall set allprofiles state on
    
  2. अगर स्थानीय और सार्वजनिक आईपी पर सब कुछ काम कर रहा है तो फिर से जांचें

आप शुभकामनाएँ

राफाल


3
इसके कारण IIS एक्सप्रेस अब Win201 पर VS2013 के साथ VS2013 को प्रशासक के रूप में चलाने के बिना नहीं चला। यह IIS एक्सप्रेस द्वारा अब नेट्स कमांड के परिणामस्वरूप बाहरी ट्रैफ़िक को खोलने की कोशिश कर रहा है। मैं भी वास्तव में उस ट्रैफ़िक की सेवा करने में सक्षम नहीं था; मुझे एक 503 मिलेगा। इस उत्तर में netsh कमांड के कारण होने वाली समस्या को उलटने के लिए, इसे कमांड प्रॉम्प्ट से प्रशासक के रूप में चलाएं: netsh http delete urlacl url=http://*:55416/(अपने पोर्ट के साथ पोर्ट बदलें)
क्रिस मोसचिनी

fwiw - मुझे चरण 4 की आवश्यकता नहीं है (netsh कॉल कि @ रफाल ज़रूर नहीं है) और, हालाँकि मुझे अपने समाधान में VS2013 परियोजनाओं को चलाने के लिए चरण 2 में "लोकलहोस्ट" बंधन की आवश्यकता नहीं है, सामने अंत भार काफी तेजी से कि "स्थानीय होस्ट" बाध्यकारी जगह में छोड़ दिया जाता है।
लक्किया

मैंने पाया कि उपरोक्त निर्देशों के बाद भी 503 का उपयोग हुआ localhost। मैंने पाया कि अतिथि (विंडोज़) मशीन का नाम बाइंडिंग में होना चाहिए applicationhost.configऔर होस्ट (मैक) पर अतिथि मशीन का नाम मैप करने के लिए आवश्यक 127.0.0.1है /etc/hosts। तभी मेजबान मशीन पर अतिथि मशीन का अनुरोध सफल हुआ।
मैट

चरण 5 के लिए एक जोड़। iisexpress.exe / siteid का उपयोग करें: आईडी जहां आईडी <साइट आईडी = "आईडी"> सेटिंग में आपकी साइट की आईडी विशेषता का मूल्य है, अन्यथा यह 1 साइट शुरू करेगी।
मुदित जैन

9

पाया कि समस्या को एक खराब यूरालैक मैपिंग के साथ करना था। यह पता लगाने के लिए:

netsh http show urlacl 

और उन चीज़ों की तलाश करें, जैसे http://+:80/या जिस पोर्ट के लिए आप बाध्य हैं।

फिर उपयोग करें

netsh http delete url=<the url from the list>

इससे मेरे लिए समस्या ठीक हो गई।


4
netsh http डिलीट होना चाहिए urlacl url = <url from the list>, इसने मेरे लिए काम किया धन्यवाद!
सर्जियोक्स

1
यह एमएसडीएन ब्लॉग पर अधिक विस्तार से चर्चा की गई है । यह अंततः मेरा मुद्दा था।
केविन शार्नरहस्ट

3
धन्यवाद, सटीक वाक्यविन्यास हैnetsh http delete urlacl <yoururl>
योएल हैल्ब

7

मेरे लिए कुछ भी काम नहीं किया। अंत में मुझे iisexpress -xy मिला

मेरा उत्तर https://stackoverflow.com/a/33623399/631527 देखें

एक और उपाय है ngrok


गजब का! मैंने उन सभी समाधानों की कोशिश की और वे भी काम नहीं किए। "खराब अनुरोध" या "सेवा अनुपलब्ध"। बहुत जटिल। मैंने नोड मॉड्यूल स्थापित किया और इसे चलाया, यह तुरंत काम करता है !!
तेतरादेव

काम करता है! पवित्र! धन्यवाद!
ऐसन बैक्सटर

बाहर की जाँच भी करें
टूलकिट

1
यह SIMPLY ngrok के साथ एक आकर्षण की तरह काम करता है! यह पहले लोकलहोस्ट से आईस-प्रॉक्सी और फिर प्रॉक्सी से एनक्रोच करने के लिए रूट करने के लिए अजीब है, लेकिन हे, काम किया! उदाहरण के लिए, मेरे पास पोर्ट पर मेरा आईसेक्‍सप्रेस है 3028। मैं भागा iisexpress-proxy 3028 to 12345और फिर ./ngrok.exe http 12345। Rib
रिबेल रिबेरो

@TetraDev, "खराब अनुरोध" या "सेवा अनुपलब्ध" इसलिए थी क्योंकि होस्टहोस्ट को लोकलहोस्ट को नेक्रोक से प्राप्त करने पर होस्ट किया गया हेडर एक स्थानीयहोस्ट नहीं था जैसा कि यहां
दानी टोरेस

3

किसने मेरी मदद की, 'IISExpress' आइकन, 'सभी एप्लिकेशन दिखाएं' पर क्लिक करना सही था। फिर वेबसाइट का चयन करना और मैंने देखा कि यह किस aplicationhost.config का उपयोग करता है, और सुधार पूरी तरह से चला गया।

IISExpress कॉन्फ़िगरेशन


1

समस्या समाधान के बजाय वेब फ़ोल्डर के अंदर Applicationhost.config फ़ाइल को अपडेट कर रही है। समाधान कॉन्फ़िगरेशन फ़ाइल को बदलने के लिए एक है


1

@Vikomall के समाधान के बाद, व्यवस्थापक के रूप में वीएस शुरू करना मत भूलना। यह मेरे लिए इसे ठीक करें।


0

एंथोनी रिज़ोलो के जवाब के बारे में: विंडोज 8.1 में, मुझे इस तरह लिखना था:

netsh http delete urlacl url=<the url from the list>

उदाहरण के लिए:

netsh http delete urlacl url=http://+:8689/

0

ऊपर दिए गए किसी भी उत्तर ने मेरे लिए काम नहीं किया।

मेरे पास एक ही सेवा के लिए netsh में दो प्रविष्टियाँ हैं

netsh http show urlacl

यहां छवि विवरण दर्ज करें

एक मजबूत वाइल्डकार्ड का उपयोग करता है, दूसरा कमजोर वाइल्डकार्ड का उपयोग करता है।

कमजोर वाइल्डकार्ड वाले को हटाकर काम किया।

नेट्स के संदर्भ में मजबूत और कमजोर वाइल्डकार्ड के बारे में अधिक

जब एक UrlPrefix के होस्ट तत्व में एक एकल प्लस चिह्न (+) होता है, तो UrlPrefix अपनी योजना, बंदरगाह और सापेक्ष तत्वों के संदर्भ में सभी संभावित होस्ट नामों से मेल खाता है, और मजबूत वाइल्डकार्ड श्रेणी में आता है।

जब एक तारांकन चिह्न (*) मेजबान तत्व के रूप में प्रकट होता है, तो UrlPrefix कमजोर वाइल्डकार्ड श्रेणी में आता है। इस तरह का UrlPrefix निर्दिष्ट योजना, पोर्ट और सापेक्ष के साथ जुड़े किसी भी होस्ट नाम से मेल खाता है जो पहले से ही एक मजबूत-वाइल्डकार्ड, स्पष्ट या आईपी-बाउंड कमजोर-वाइल्डकार्ड UrlPrefix द्वारा मेल नहीं खाता है। इस होस्ट विनिर्देश को कुछ परिस्थितियों में डिफ़ॉल्ट कैच-सभी के रूप में उपयोग किया जा सकता है, या कई यूआरएललाइफिक्स का उपयोग किए बिना URL नेमस्पेस के एक बड़े हिस्से को निर्दिष्ट करने के लिए उपयोग किया जा सकता है।

https://docs.microsoft.com/en-gb/windows/desktop/Http/urlprefix-strings

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.