IIS एक्सप्रेस के साथ कस्टम डोमेन का उपयोग करना


304

परंपरागत रूप से मैं अपने लोकलहोस्ट डेवलपमेंट सर्वर के साथ कस्टम डोमेन का उपयोग करता हूं। की तर्ज पर कुछ:

dev.example.com
dev.api.example.com

इसने मुझे बाहरी एपीआई जैसे कि फेसबुक के साथ काम करते समय एक टन लचीलापन प्रदान किया है। इसने विजुअल स्टूडियो डेवलपमेंट सर्वर में निर्मित के साथ अतीत में बहुत अच्छा काम किया है, क्योंकि मुझे केवल उन DNS रिकॉर्ड्स की ओर इशारा करने के लिए एक CNAME जोड़ना था 127.0.0.1

हालाँकि मैं इसे IIS एक्सप्रेस के साथ काम करने में सक्षम नहीं कर पाया हूँ। मैंने जो भी कोशिश की है वह सब विफल हो गया लगता है। मैंने applicationHost.configIIS एक्सप्रैस के लिए फ़ाइल में सही XML कॉन्फिगर भी जोड़ दिया है , लेकिन आईआईएस की एक सच्ची स्थापना के रूप में मान्य प्रविष्टियों को मान्यता नहीं देता है।

<binding protocol="http" bindingInformation="*:1288:dev.example.com" />

जब भी मैं इस लाइन को दर्ज करता हूं और अनुरोध करता http://dev.example.com:1288हूं कि मुझे निम्नलिखित संदेश मिलेगा:

गलत अनुरोध (मेजबान का नाम अवैध

क्या किसी को पता है कि मैं कुछ स्पष्ट याद कर रहा हूँ? या क्या इस प्रकार के उपयोग को देखने के लिए IIS एक्सप्रेस टीम के पास वास्तव में दूरदर्शिता की कमी थी?


सुनिश्चित करें कि आपके पास "Clr2IntegratedAppPool" या "Clr4IntegratedAppPool" पर सेट किए गए एप्लिकेशन नोड की ApplicationPool विशेषता है। मुझे खराब होस्टनाम त्रुटि मिली जिसे आप "Clr2ClassicAppPool" या "Clr4ClassicAppPool" का उपयोग करते समय देख रहे हैं।
नील मुनरो

भ्रमित - CNAME रिकॉर्ड IP पते को स्वीकार नहीं करते हैं, बल्कि अन्य होस्ट नाम के बजाय। क्या आपका मतलब ए रिकॉर्ड था?
स्कॉट

1
इसके साथ मेरे पास बहुत सारे मुद्दे थे और आईआईएस एक्सप्रेस के बजाय केवल आईआईएस का उपयोग करना बहुत आसान था
user0b101010

मैं बस इस में भाग गया। मैं उम्मीद कर रहा था कि यह सिर्फ पोर्ट नंबर को देखेगा और डोमेन को नजरअंदाज करेगा। ऐसा भाग्य नहीं। काश मैं पोर्ट पर "सभी को स्वीकार" सक्षम कर पाता ...
ब्रैडी मोरिट्ज़

अभी मतदान करें! मैंने एक UserVoice सुझाव जोड़ा है: visualstudio.uservoice.com/forums/121579-visual-studio/…
ल्यूक पुप्लेट

जवाबों:


367

यह मेरे लिए काम कर रहा है (वीएस 2013 के लिए अपडेट किया गया, 2010 के लिए संशोधन इतिहास देखें, वीएस 2015 के लिए इसे देखें: https://stackoverflow.com/a/32744234/218971 ):

  1. राइट-क्लिक करें अपने वेब अनुप्रयोग परियोजना ▶ PropertiesWeb, तो कॉन्फ़िगर Serversअनुभाग इस प्रकार है:
    • IIS Express ▼ड्रॉप डाउन सेलेक्ट करें
    • प्रोजेक्ट Url: http://localhost
    • ओवरराइड एप्लिकेशन रूट URL: http://dev.example.com
    • क्लिक करें Create Virtual Directory(यदि आपको कोई त्रुटि मिलती है तो आपको IIS 5/6/7/8 को अक्षम करना पड़ सकता है, IIS Default Siteको कुछ भी लेकिन पोर्ट में बदल दें :80, सुनिश्चित करें कि Skype 80 पोर्ट का उपयोग नहीं कर रहा है , आदि)
  2. वैकल्पिक रूप से: सेट Start URLकरने के लिएhttp://dev.example.com
  3. ओपन %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config(विंडोज एक्सपी, विस्टा, और 7) और <sites>निम्नलिखित की रेखाओं के साथ होने के लिए कॉन्फ़िगर ब्लॉक में साइट परिभाषा को संपादित करें :

    <site name="DevExample" id="997005936">
        <application path="/" applicationPool="Clr2IntegratedAppPool">
            <virtualDirectory
                path="/"
                physicalPath="C:\path\to\application\root" />
        </application>
        <bindings>
            <binding
                protocol="http"
                bindingInformation=":80:dev.example.com" />
        </bindings>
        <applicationDefaults applicationPool="Clr2IntegratedAppPool" />
    </site>
    
  4. यदि MVC चल रहा है: सुनिश्चित करें कि applicationPoolयह "एकीकृत" विकल्पों में से एक पर सेट है (जैसे "Clr2IntegratedAppPool)"।

  5. अपनी hostsफ़ाइल खोलें और लाइन जोड़ें 127.0.0.1 dev.example.com
  6. ► Start आपका आवेदन!

टिप्पणियों से कुछ महान सलाह:

  • आपको विजुअल स्टूडियो को प्रशासक के रूप में चलाने की आवश्यकता हो सकती है।
  • यदि आप अन्य देवों को अपने IIS रन देखना चाहते हैं netsh http add urlacl url=http://dev.example.com:80/ user=everyone
  • यदि आप चाहते हैं कि साइट सभी होस्ट सेट के लिए हल हो जाए bindingInformation="*:80:"। अपने इच्छित किसी भी पोर्ट का उपयोग करें, 80 बस सुविधाजनक है।

12
यह वही है जो मैंने किया था, यह लिखने के बारे में था, लेकिन आपने मुझे पंच से हराया :-) एक साइड नोट के रूप में, यदि आप दूसरे देव को अपने आईआईएस को देखने देना चाहते हैं, तो आप कुछ ऐसा करना चाहते हैं जैसे "netsh http add urlacl url = dev.example.com:80 उपयोगकर्ता = हर कोई "
EBarr

6
इसके अलावा, यदि आप चाहते हैं कि साइट सभी मेजबानों के लिए हल हो जाए, तो आप उपयोग कर सकते हैं: बाइंडिंगफॉर्मेशन = "*: 80:" मैं इसका उपयोग करता हूं ताकि localtunnel.com काम करता है।
लांस फिशर

17
मुझे एक एक्सेस अस्वीकृत त्रुटि मिल रही थी। 2012 में चल रहे वीएस ने इसे ठीक कर दिया।
xanadont

3
IIS एक्सप्रेस का कौन सा संस्करण है? मैं VS2012 चला रहा हूं (जो मेरा मानना ​​है कि आईआईएस एक्सप्रेस 8.0 है), और जब मैं वेब प्रॉपर्टीज पेज के "सर्वर" क्षेत्र के तहत "यूज लोकल आईआईएस सर्वर" रेडियोबॉटन पर क्लिक करता हूं, तो आईआईएस एक्सप्रेस चेकबॉक्स का उपयोग करें पर क्लिक करें, और फिर कोशिश करें। " mydev.example.com " में डालने के लिए , फिर "वर्चुअल निर्देशिका बनाएँ" बटन दबाएं, मुझे यह त्रुटि मिलती है "आभासी निर्देशिका बनाने में असमर्थ। वेब साइट mydev.example.com नहीं बना सकता"। आपको सर्वर नाम के लिए "लोकलहोस्ट" निर्दिष्ट करना होगा।
माइकल मैकार्थी

12
यह जटिल है। कई अलग-अलग स्थानों पर सीटिंग को बदलना चाहिए। असली गड़बड़ करना आसान है। क्या वास्तव में कोई सरल तरीका नहीं है?
एंडरसन

151

के लिए दृश्य स्टूडियो 2015 से ऊपर जवाब में दिए चरणों का लागू होती हैं लेकिन applicationhost.configफाइल एक नए स्थान में है। आपके "समाधान" फ़ोल्डर में पथ का अनुसरण होता है, यह भ्रमित करता है यदि आपने अपग्रेड किया है और applicationhost.configआपके मशीन पर दो संस्करण होंगे ।

\.vs\config

उस फोल्डर के भीतर आपको अपनी applicationhost.config फाइल दिखाई देगी

वैकल्पिक रूप से आप .config फाइल के लिए अपने समाधान फ़ोल्डर को खोज सकते हैं और इसे इस तरह से खोज सकते हैं।

मैंने व्यक्तिगत रूप से निम्नलिखित कॉन्फ़िगरेशन का उपयोग किया है:

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

मेरे होस्ट फ़ाइल में निम्नलिखित के साथ:

127.0.0.1       jam.net
127.0.0.1       www.jam.net

और मेरी Applicationhost.config फ़ाइल में निम्नलिखित:

<site name="JBN.Site" id="2">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:\Dev\Jam\shoppingcart\src\Web\JBN.Site" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:49707:" />
            <binding protocol="http" bindingInformation="*:49707:localhost" /> 
    </bindings>
</site>

एक व्यवस्थापक के रूप में दृश्य स्टूडियो 2015 के अपने उदाहरण को चलाने के लिए याद रखें! यदि आप हर बार ऐसा नहीं करना चाहते हैं तो मैं इसे पुनः शामिल करता हूं:

डिफ़ॉल्ट रूप से विजुअल स्टूडियो को प्रशासक के रूप में कैसे चलाएं

मुझे उम्मीद है कि यह किसी की मदद करता है, मेरे पास दृश्य स्टूडियो 2015 में अपग्रेड करने की कोशिश करते समय समस्या थी और मुझे एहसास हुआ कि मेरे किसी भी कॉन्फ़िगरेशन को नहीं किया जा रहा है।


9
महत्वपूर्ण भाग डिफ़ॉल्ट को बदलने के बजाय दूसरे बाध्यकारी को जोड़ना है जैसा कि कई अन्य उत्तरों में सुझाया गया है। और आपको वीएस को एक प्रशासक के रूप में चलाना होगा, वास्तव में (सिक!)। धन्यवाद। *:49707:*:49707:localhost
फ़्रेक्ज़

3
http://jam.127.0.0.1.xip.io/यदि आप अपनी मेजबानों की फाइल को संशोधित नहीं करना चाहते हैं तो आप एक यूआरएल का उपयोग भी कर सकते हैं । साथ ही, किसी भी सहयोगी को अपना संशोधन करने की आवश्यकता नहीं होगी। Xip.io देखें ।
ज़ैक मार्टिन

1
मुझे लगता है कि यह उस फ़ोल्डर को नोट करने के लायक है ".vs" छिपा हुआ है और इसे पहली बार दिखाई देना चाहिए
निराश

3
मैंने पुष्टि की है कि यह Visual Studio 2017 में भी काम करता है। दिलचस्प बात यह है कि मुझे दोनों <बाध्यकारी> तत्वों की आवश्यकता नहीं थी (बस "लोकलहोस्ट" के बिना पहला वाला)। हालांकि, विजुअल स्टूडियो को निश्चित रूप से प्रशासक के रूप में चलने की आवश्यकता है, जो कि कष्टप्रद है
लॉरेन पॉलसेन

1
मैं चाहता हूं कि हममें से उन लोगों के लिए एक रास्ता हो, जिन्हें ऐसा करने के लिए प्रशासनिक रूप से कुछ भी चलाने की अनुमति नहीं है। नियोक्ता / ग्राहक जो कंबल पर प्रतिबंध लगाते हैं, वे बिना किसी विचार के विशेषाधिकार प्राप्त करते हैं कि वे कैसे सुरक्षित रूप से सक्षम हो सकते हैं यह अविश्वसनीय रूप से कम देखा गया है।
स्टीव पेटीफ़र

44

IIS एक्सप्रेस के साथ Visual Studio 2012 का उपयोग करते समय, मौजूदा बाइंडिंग को बदलना स्थायी रूप से काम नहीं करता है। (यह तब तक काम कर सकता है जब तक आप वीएस को बंद नहीं करते, लेकिन उसके बाद, चीजें वास्तव में गड़बड़ हो जाती हैं।)

कुंजी मौजूदा लोकलहोस्ट को बांध कर रख रही है और उसके बाद एक नई बाइंडिंग जोड़ रही है।

जब तक आप प्रशासक के रूप में नहीं चल रहे हैं, तब तक आपको netsh add urlaclएक मानक उपयोगकर्ता के रूप में एक गैर-लोकलहोस्ट साइट चलाने के लिए खुद को अनुमति देने की आवश्यकता होगी ।

यदि आप किसी होस्ट नाम की अनुमति देना चाहते हैं, तो पूरी प्रक्रिया इस प्रकार है:

  1. अपना वेब एप्लिकेशन बनाएं, और पता करें कि वह किस पोर्ट का उपयोग कर रहा है (प्रोजेक्ट गुण देखें, वेब टैब, प्रोजेक्ट यूआरएल)।
  2. व्यवस्थापक प्रॉम्प्ट से, निम्न आदेशों को चलाएं ( पोर्ट संख्या के साथ पोर्टबार्न को बदलकर आप # 1 में आए):

    netsh http add urlacl url="http://*:portnumber/" user=everyone
    netsh http add urlacl url="http://localhost:portnumber/" user=everyone
    

आप बेहतर सुरक्षा के लिए सभी के बजाय अपने उपयोगकर्ता नाम (DOMAIN \ USER) का भी उपयोग कर सकते हैं।

  1. Applicationhost.config खोलें (आमतौर पर My Documents \ IIS Express \ config के तहत), और अपने पोर्ट नंबर के साथ तत्व ढूंढें।
  2. इच्छित नाम के साथ एक और बंधन जोड़ें (इस मामले में, *)। उदाहरण के लिए:

    <site name="MvcApplication1" id="2">
        <application path="/" applicationPool="Clr4IntegratedAppPool">
            <virtualDirectory path="/" physicalPath="C:\sites\MvcApplication1" />
        </application>
        <bindings>
            <binding protocol="http" bindingInformation="*:12853:localhost" />
            <binding protocol="http" bindingInformation="*:12853:*" />
        </bindings>
    </site>
    

ध्यान दें, यदि आप सभी होस्ट नाम (*) खोलना चाहते हैं, तो आपको दो नेटश कमांड (* के लिए एक और लोकलहोस्ट के लिए एक) की आवश्यकता होगी। यदि आप केवल एक विशिष्ट होस्ट नाम खोलना चाहते हैं, तो आपको दूसरे नेटश कमांड (लोकलहोस्ट) की सख्त आवश्यकता नहीं है; आपके विशिष्ट होस्ट नाम के साथ सिर्फ एक ही पर्याप्त है।


वही (1 दृष्टिकोण), जब mycustomhost के लिए ब्राउज़िंग : myportnr मुझे "सेवा अनुपलब्ध" मिलता है। VS2012। मैं दूसरा प्रयास नहीं कर सकता क्योंकि "माय डॉक्यूमेंट्स" के तहत कोई IIS एक्सप्रेस नहीं है और
Applicationhost.config

2
VS2013 के साथ, मुझे लगता है कि यह विन्यास केवल तभी काम करता है जब मैं व्यवस्थापक के रूप में चलता हूं! (गैर-व्यवस्थापक के रूप में चल रहा है, IIS एक्सप्रेस 2 बाइंडिंग को अनदेखा करता हुआ प्रतीत होता है - यदि मैं अधिसूचना आइकन से अपना UI खोलता हूं, तो IIS मेरी साइट को चलाने के रूप में दिखाता है, लेकिन केवल पहली बाइंडिंग दिखाता है, और मैं केवल लोकलहोस्ट का उपयोग कर सकता हूं ... यदि मैं व्यवस्थापक के रूप में चल रहा हूं, यह UI में दोनों बाइंडिंग को दिखाता है, और दोनों काम करता है।) मैंने नेटशेल के साथ urlacls जोड़ा है, लेकिन यह कोई फर्क नहीं पड़ता प्रतीत होता है - IIS एक्सप्रेस भी कोशिश नहीं करता है और स्थानीयहोस्ट के अलावा कुछ भी बांधता नहीं है। अगर यह ऊंचा नहीं है।
इयान ग्रिफिथ्स

*हल किए गए "सेवा अनुपलब्ध" के साथ एक रिकॉर्ड जोड़ना मेरे लिए।
jerone

उस परिदृश्य के बारे में जो आपको पोर्ट 443 पर HTTPS का उपयोग करने की आवश्यकता है?
किक्सोका

@ किक्सॉका मैं HTTPS चलाने की कोशिश कर रहा हूं। मैं इसे काम में लाने में कामयाब रहा लेकिन ब्राउज़र शिकायत करता है कि प्रमाणपत्र डोमेन से मेल नहीं खाता है। मैं अतीत है कि लेकिन सभी संसाधनों तो कोई छवि, स्क्रिप्ट या सीएसएस लोड करने में विफल।
प्राइम बाइ डिज़ाइन

24

अमान्य होस्टनाम इंगित करता है कि IIS एक्सप्रेस कॉन्फ़िगरेशन फ़ाइल में आपके द्वारा कॉन्फ़िगर की गई वास्तविक साइट (सबसे अधिक संभावना है) नहीं चल रही है। IIS एक्सप्रेस में एक प्रक्रिया मॉडल नहीं है जैसे IIS करता है।


आपकी साइट को चलाने के लिए इसे स्पष्ट रूप से शुरू करने की आवश्यकता होगी (या तो वेबमैट्रिक्स से खुलने और एक्सेस करने से, या कमांड लाइन से iisexpress.exe (यह इंस्टॉलेशन डायरेक्टरी से) / साइट पैरामीटर के साथ)।


सामान्य तौर पर, स्थानीय पहुँच के लिए पूरी तरह से योग्य DNS नामों का उपयोग करने की अनुमति के चरण हैं, आइए DNS नाम dev.example.com के अपने उदाहरण का उपयोग करें

  1. % windows \% \ system32 \ driver \ etc \ edit फ़ाइल को संपादित करने के लिए dev.example.com को 127.0.0.1 पर मैप करें (व्यवस्थापक विशेषाधिकार आवश्यक है)। यदि आप DNS सर्वर (जैसे निक के मामले में) को नियंत्रित करते हैं तो DNS प्रविष्टि पर्याप्त है क्योंकि इस चरण की आवश्यकता नहीं है।
  2. यदि आप प्रॉक्सी के माध्यम से इंटरनेट का उपयोग करते हैं, तो सुनिश्चित करें कि dev.example.com प्रॉक्सी के लिए आगे नहीं बढ़ेगा (आपको अपने ब्राउज़र में अपवाद सूची में डालना होगा (IE के लिए यह उपकरण / इंटरनेट विकल्प / कनेक्शन / लैन सेटिंग्स होगा) उसके बाद प्रॉक्सी सर्वर / एडवांस में जाएं और dev.example.com को एक्साइटमेंट लिस्ट में डाल दें।
  3. अपनी साइट के लिए IIS एक्सप्रेस बाइंडिंग कॉन्फ़िगर करें (जैसे: Site1) dev.example.com को शामिल करने के लिए। बंधन का उपयोग करने के लिए प्रशासनिक विशेषाधिकार की आवश्यकता होगी। वैकल्पिक रूप से, एक बार का URL आरक्षण http.sys का उपयोग करके किया जा सकता है

    netsh http add urlacl url=http://dev.example.com:<port>/ user=<user_name>

  4. iisexpress /site:Site1WebMatrix में Site1 शुरू या खोलें


2
हाय जोरो, मदद के लिए धन्यवाद, लेकिन 127.0.0.1 मेरी DNS में होस्ट फ़ाइल को सेट नहीं किया गया है ताकि सभी डेवलपर्स के पास समान पहुंच हो। दूसरे मैं इसे वीएस में डिबगिंग शुरू करने के लिए नहीं प्राप्त कर सकता, जब तक कि बंधन को "*: 1234: लोकलहोस्ट" के रूप में सेट नहीं किया जाता है, जो पूरी तरह से बेकार सेटअप है, क्योंकि यह मेरी मशीन पर सभी आईपी पते के लिए बाध्य है, लेकिन केवल "स्थानीयहोस्ट के होस्ट हेडर को स्वीकार करता है" "। उन्होंने सिर्फ "127.0.0.1:1234:" क्यों नहीं किया और इस बकवास से बचें। जब तक आईपी और पोर्ट समाधान के रूप में होस्ट हेडर की आवश्यकता नहीं होती है। और एडमिन के रूप में दौड़ना एक बड़ी टीम के लिए गधे का एक बहुत बड़ा दर्द है। क्या एक आपदा आईआईएस एक्सप्रेस है।
निक बेर्डी

1
केवल एक संदर्भ के रूप में Bad Request - Invalid Hostnameइसका मतलब है कि मैं जिस होस्टनाम का उपयोग करने का प्रयास कर रहा हूं वह हल नहीं हो सकता है क्योंकि IIS एक्सप्रेस टीम ने अपने असीम ज्ञान में विशेष रूप से "लोकलहोस्ट" को केवल होस्ट हेडर के रूप में कॉल करने का निर्णय लिया है जो काम करेगा। और वीएस आपको इसे "*: 1234: लोकलहोस्ट" के अलावा किसी और तरीके से नहीं चलाने देगा
निक बर्र्डी

2
मैं आपको 127.0.0.1 अंक पर सुनता हूं। बाध्यकारी में "लोकलहोस्ट" निश्चित रूप से एक दर्द है क्योंकि इसमें 127.0.0.1 के लिए यातायात शामिल नहीं है । डिजाइन http.sys (http प्रोटोकॉल हैंडलर) के आज के अनुबंध द्वारा सीमित है जो केवल गैर-प्रशासनिक उपयोग के लिए "लोकलहोस्ट" को मान्यता देता है। Http.sys के साथ केवल एक बार URL आरक्षण द्वारा व्यवस्थापक को केवल आवश्यकता को कम किया जा सकता है (ऊपर दी गई जानकारी अपडेट करेगा)। कृपया मुझे बताएं कि आप विजुअल स्टूडियो के साथ सटीक उपयोग कर रहे हैं (यह वीपीआई बीटा के साथ VS2010 है?)। आइए इस पर काम करने की कोशिश करें कुछ और (उम्मीद है) इस मुद्दे को सुलझाएं।
यारो डनजस्की

नोट - यदि आप netsh.exe त्रुटि 87 देखते हैं, तो पैरामीटर गलत है - ऐसा इसलिए हो सकता है क्योंकि आपने अपने होस्टनाम के बाद एक URI पथ (/) छोड़ दिया है।
टिम लवेल-स्मिथ

19

मेरी WebMatrix आईआईएस एक्सप्रेस पर परिवर्तित करने से स्थापित "*:80:localhost"करने के लिए "*:80:custom.hostname"(, "बैड होस्ट का नाम" भी उचित आदि \ मेजबान मैपिंग के साथ) काम नहीं किया था, लेकिन "*:80:" किया काम - और अन्य उत्तर यहाँ के लिए आवश्यक अतिरिक्त कदम से कोई भी साथ। ध्यान दें कि "*:80:*"यह नहीं होगा; दूसरा तारांकन छोड़ दो।


3
uuuum, इसलिए "*:80:*"मेरे लिए काम किया, लेकिन फिर मैंने अपने कंप्यूटर को फिर से शुरू किया और यह अचानक काम नहीं करेगा जब तक कि मैंने इसे बदल नहीं दिया "*:80:"और सब ठीक हो गया! धन्यवाद।
CWSpear

2
आखिरकार!! इसके अलावा अन्य सभी चरणों का पालन किया, और अंत में * को हटाकर काम किया, धन्यवाद!
चार्ल्स फिलिप

बस यहां यह कहने के लिए कि यह मेरे लिए काम करता है। मैंने स्वीकार किए गए उत्तर की कोशिश की और आपके द्वारा कहे गए सभी परिवर्तनों को वापस कर दिया और सभी महान काम करते हैं। मैं VS2013 अपडेट 4 का उपयोग कर रहा हूं।
जेसनविलासक

यह पूरी तरह से काम करने लगता है। VS2017 का उपयोग करते समय, मुझे यकीन नहीं है कि प्रोजेक्ट Url में क्या होना चाहिए यह लिखने के लिए कि applicationhost.config फ़ाइल में? क्या वीएस आईडीई के माध्यम से सेट करना संभव है?
जिम

8

मैं अपने वर्कफ़्लो में सार्वजनिक आईपी एड्रेस को एकीकृत करने की कोशिश कर रहा था और इन उत्तरों से मदद नहीं मिली (मुझे आईडीई के रूप में आईडीई का उपयोग करना पसंद है)। लेकिन उपरोक्त मुझे समाधान के लिए ले जाता है (दृश्य स्टूडियो 2012 / विंडोज 8 के साथ एकीकृत करने के लिए इसे प्राप्त करने के लिए दीवार के खिलाफ मेरे सिर को पीटने के लगभग 2 घंटे के बाद) यहां मेरे लिए काम करना समाप्त हो गया।

के तहत VisualStudio द्वारा उत्पन्न applicationhost.configC:\Users\usr\Documents\IISExpress\config

    <site name="MySite" id="1">
        <application path="/" applicationPool="Clr4IntegratedAppPool">
            <virtualDirectory path="/" physicalPath="C:\Users\usr\Documents\Visual Studio 2012\Projects\MySite" />
        </application>
        <bindings>
            <binding protocol="http" bindingInformation="*:8081:localhost" />
            <binding protocol="http" bindingInformation="*:8082:localhost" />
            <binding protocol="http" bindingInformation="*:8083:192.168.2.102" />
        </bindings>
    </site>
  • IISExpress को चलाने के लिए सेट करें Administratorताकि यह बाहरी पतों पर बाँध सके (स्थानीय होस्ट नहीं)
  • विज़ुअल स्टुइओ को चलाएं Administratorताकि यह प्रक्रिया को प्रशासक के रूप में शुरू कर सके जिससे बाध्यकारी को जगह मिल सके।

शुद्ध परिणाम यह है कि आप 192.168.2.102मेरे मामले और परीक्षण (उदाहरण के लिए एंड्रॉइड एमुलेटर में) में ब्राउज़ कर सकते हैं । मुझे वास्तव में उम्मीद है कि यह किसी और की मदद करता है क्योंकि यह निश्चित रूप से मेरे लिए एक परेशान करने वाली प्रक्रिया थी।

जाहिर तौर पर यह एक सुरक्षा सुविधा है जिसे मैं अक्षम देखना पसंद करूंगा।


8

ऊपर जेसिका चकमक पत्थर की तरह , मैं मैन्युअल रूप से संपादित नहीं करना चाहता था .vs \ config \ applicationhost.config क्योंकि मैं स्रोत नियंत्रण में बनी रहना चाहता था। मैं एक अलग बैच फ़ाइल भी नहीं रखना चाहता था। मैं वीएस 2015 का उपयोग कर रहा हूं ।

प्रोजेक्ट गुण → बिल्ड ईवेंट्स → प्री-बिल्ड इवेंट कमांड लाइन: परियोजना गुणों का स्क्रीनशॉट


::The following configures IIS Express to bind to any address at the specified port

::remove binding if it already exists
"%programfiles%\IIS Express\appcmd.exe" set site "MySolution.Web" /-bindings.[protocol='http',bindingInformation='*:1167:'] /apphostconfig:"$(SolutionDir).vs\config\applicationhost.config"

::add the binding
"%programfiles%\IIS Express\appcmd.exe" set site "MySolution.Web" /+bindings.[protocol='http',bindingInformation='*:1167:'] /apphostconfig:"$(SolutionDir).vs\config\applicationhost.config"

बस सुनिश्चित करें कि आप पोर्ट नंबर को अपने इच्छित पोर्ट में बदल सकते हैं।


यहां एक नाबालिग जोड़ा। अपने विंडोज फ़ायरवॉल में उस पोर्ट को खोलने के लिए नियम बनाना सुनिश्चित करें। तब यह एक आकर्षण की तरह काम करता था!
पीटर एम

मुझे आपका उत्तर पसंद है क्योंकि .vs \ config \ applicationhost.config को संपादित करना संभव नहीं है, जब कई डेवलपर अपनी मशीनों पर IIS एक्सप्रेस चलाते हैं। धन्यवाद!
कॉलिन

6

मतदान का उत्तर मान्य है .. और इस जानकारी से मुझे काफी मदद मिली। मुझे पता है कि इस विषय पर पहले भी चर्चा हो चुकी है लेकिन मैं कुछ अतिरिक्त इनपुट जोड़ना चाहता था। लोग कह रहे हैं कि आपको उपयोगकर्ता IISExpress / config निर्देशिका में Application.config फ़ाइल को "मैन्युअल रूप से संपादित" करना होगा। यह मेरे लिए एक बड़ा मुद्दा था क्योंकि मैं विभिन्न डेवलपर्स के लिए स्रोत नियंत्रण के माध्यम से कॉन्फ़िगरेशन को वितरित करना चाहता था।

मैंने जो पाया वह यह है कि आप "C: \ Program Files \ IIS Express \ appcmd.exe" प्रोग्राम का उपयोग करके इस फ़ाइल के अद्यतन को स्वचालित कर सकते हैं। नियंत्रण मापदंडों का पता लगाने में थोड़ा समय लगा लेकिन इल ने मेरे निष्कर्षों को यहां साझा किया। अनिवार्य रूप से आप एक .bat फ़ाइल बना सकते हैं जो NETSH कमांड और APPCMD.EXE दोनों को चलाता है (और यदि आप चाहें तो शायद एक होस्ट फ़ाइल को स्वैप करें) IIS एक्सप्रेस के साथ होस्ट हेडर कॉन्फ़िगरेशन को आसान बनाने के लिए।

आपकी इंस्टॉल बैट फ़ाइल कुछ इस तरह दिखाई देगी:

netsh http add urlacl url=http://yourcustomdomain.com:80/ user=everyone 

"C:\Program Files\IIS Express\appcmd.exe" set site "MyApp.Web" /+bindings.[protocol='http',bindingInformation='*:80:yourcustomdomain.com']

मैं एक "अनइंस्टॉल" बैट फ़ाइल बनाऊंगा, जो इन बाइंडिंग को साफ कर देगा .. (क्योंकि कई बार Im सिर्फ DNS को फेक कर देता है ताकि मैं कोड पर काम कर सकूं जो होस्ट नाम संवेदनशील है)

netsh http delete urlacl url=http://yourcustomdomain.com:80/

"C:\Program Files\IIS Express\appcmd.exe" set site "MyApp.Web" /-bindings.[protocol='http',bindingInformation='*:80:yourcustomdomain.com']

मुझे उम्मीद है कि यह जानकारी किसी के लिए उपयोगी है .. मुझे उजागर करने में थोड़ा समय लगा।


4

यारो की सलाह के बाद, मैं एक छोटे संशोधन के साथ विंडोज एक्सपी और आईआईएस एक्सप्रेस (वेब ​​मैट्रिक्स के माध्यम से स्थापित) के तहत यह काम पाने में सक्षम था और केवल स्थानीयहोस्ट तक सीमित नहीं था। यह सिर्फ बाइंडिंग को सही ढंग से स्थापित करने की बात है।

  1. अपने वेब एप्लिकेशन रूट में फ़ोल्डर से एक नई साइट बनाने के लिए WebMatrix का उपयोग करें।
  2. WebMatrix को बंद करें।
  3. ओपन %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config (विंडोज एक्सपी। विस्टा और 7 पथ समान होंगे) और <sites>निम्नलिखित की लाइनों के साथ होने के लिए कॉन्फ़िगर ब्लॉक में साइट परिभाषा को संपादित करें :

    <site name="DevExample" id="997005936">
        <application path="/" applicationPool="Clr2IntegratedAppPool">
            <virtualDirectory
                path="/"
                physicalPath="C:\path\to\application\root" />
        </application>
        <bindings>
            <binding
                protocol="http"
                bindingInformation="*:80:dev.example.com" />
        </bindings>
        <applicationDefaults applicationPool="Clr2IntegratedAppPool" />
    </site>

यदि एमवीसी चल रहा है, तो एप्लिकेशनपूल को "एकीकृत" विकल्पों में से एक पर सेट करें।


3

डेविड का समाधान अच्छा है। लेकिन मैंने पाया कि <script>alert(document.domain);</script>पेज अभी भी "लोकलहोस्ट" को अलर्ट करता है क्योंकि प्रोजेक्ट उरेल अभी भी लोकलहोस्ट है, भले ही यह ओवरराइड हो गया हो http://dev.example.com। एक और मुद्दा जो मैं चला रहा हूं वह यह है कि यह मुझे सूचित करता है कि पोर्ट 80 पहले से ही उपयोग में है, भले ही मैंने डेविड पोर्टो द्वारा अनुशंसित 80 पोर्ट नंबर का उपयोग करके स्काइप को अक्षम कर दिया हो। इसलिए मैंने एक और उपाय निकाला है जो बहुत आसान है:

  1. नोटपैड को व्यवस्थापक के रूप में चलाएं, और C: \ Windows \ System32 \ ड्राइवरों / etc \ Host को खोलें, 127.0.0.1 mydomain जोड़ें, और फ़ाइल सहेजें;
  2. विज़ुअल स्टूडियो 2013 के साथ वेब प्रोजेक्ट खोलें (नोट: एडमिनिस्ट्रेटर के रूप में भी चलना चाहिए), प्रोजेक्ट पर राइट क्लिक करें -> गुण -> वेब, ("IIS एक्सप्रेस" विकल्प के तहत प्रोजेक्ट Url को मान http://localhost:33333/लेता है ), फिर इसे से बदलें http://localhost:33333/करने के लिए http://mydomain:333333/ नोट: इस परिवर्तन के बाद, आप न तो "वर्चुअल निर्देशिका बनाएँ" बटन परियोजना यूआरएल बॉक्स के दाईं पर क्लिक करें और न ही दृश्य स्टूडियो के सहेजें बटन क्लिक करें रूप में वे सफल नहीं हो जाएगा चाहिए। अगले चरण 3 के बाद आप अपनी सेटिंग्स को सहेज सकते हैं।
  3. % USERPROFILE% \ My दस्तावेज़ \ IISExpress \ config \ applicationhost.config खोलें, "33333: localhost" के लिए खोज करें, फिर इसे "33333: mydomain" में अपडेट करें और फ़ाइल सहेजें।
  4. चरण 2 में बताए अनुसार अपनी सेटिंग सहेजें।
  5. अपने विज़ुअल स्टूडियो में एक वेब पेज पर राइट क्लिक करें, और "ब्राउज़र में देखें" पर क्लिक करें। अब पृष्ठ के नीचे खोला जाएगा http://mydomain:333333/, और <script>alert(document.domain);</script>पृष्ठ में "mydomain" को सूचित करेगा।

नोट: ऊपर सूचीबद्ध पोर्ट नंबर 33333 माना जाता है। आपको इसे अपने दृश्य स्टूडियो द्वारा निर्धारित पोर्ट नंबर में बदलने की आवश्यकता है।

पोस्ट संपादित: आज मैंने एक और डोमेन नाम के साथ कोशिश की और निम्नलिखित त्रुटि मिली: IIS एक्सप्रेस वेब सर्वर लॉन्च करने में असमर्थ। URL पंजीकृत करने में विफल ... प्रवेश निषेध है। (0x80070005) । मैं Windows कार्य पट्टी में दाएं कोने पर IIS एक्सप्रेस आइकन पर राइट-क्लिक करके IIS एक्सप्रेस से बाहर निकलता हूं, और फिर व्यवस्थापक के रूप में अपने दृश्य स्टूडियो को फिर से शुरू करता हूं, और समस्या दूर हो जाती है।


1
अब, यह उत्तर है जिसे उचित समाधान माना जाना चाहिए! सुनिश्चित करें कि यदि आप दृश्य स्टूडियो 2015 का उपयोग कर रहे हैं तो आप .vs / config में स्थित applicationhost.config को संपादित करें।
Fabio Salvalai

1

मैंने उपरोक्त सभी की कोशिश की, कुछ भी काम नहीं किया। होस्ट फ़ाइल में IPv6 बाइंडिंग को जोड़ने से समस्या हल हो गई। @ डेविड मर्डोक जवाब के चरण 5 में, एक के बजाय दो पंक्तियाँ जोड़ें, अर्थात:

127.0.0.1 dev.example.com
::1 dev.example.com

मैंने $ ping localhostकमांड लाइन से जाँच करके यह पता लगाया , जिसका उपयोग वापस करने के लिए किया गया था:

Reply from 127.0.0.1: bytes=32 time<1ms TTL=128

इसके बजाय, यह अब लौटता है:

Reply from ::1: time<1ms

मुझे पता नहीं क्यों, लेकिन किसी कारण से IIS एक्सप्रेस ने IPv4 के बजाय IPv6 का उपयोग करना शुरू कर दिया।



0

किसी को भी जरूरत पड़ने पर यहां छोड़ना ...

मुझे IIS एक्सप्रेस में एक Wordpress Multisite सेटअप के लिए कस्टम डोमेन की आवश्यकता थी, लेकिन जब तक मैंने Webmatrix / Visual Studio को एक व्यवस्थापक के रूप में नहीं चलाया, तब तक कुछ भी काम नहीं किया। तब मैं उप-डोमेन को एक ही अनुप्रयोग में बांधने में सक्षम था।

<bindings> 
    <binding protocol="http" bindingInformation="*:12345:localhost" />
    <binding protocol="http" bindingInformation="*:12345:whatever.localhost" />
</bindings>

उसके बाद http: //whatever.localhost: 12345 / चलेगा।

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