iis - आईआईएस एक्सप्रेस के साथ कस्टम डोमेन का उपयोग करना




iis-7 iis-express (11)

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

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

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

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

हालांकि मैं इसे आईआईएस एक्सप्रेस के साथ काम करने में सक्षम नहीं हूं। मैंने जो भी कोशिश की है वह असफल रहा है। मैंने आईआईएस एक्सप्रेस के लिए applicationHost.config फ़ाइल में सही एक्सएमएल कॉन्फ़िगरेशन भी जोड़ा है, लेकिन ऐसा लगता है कि आईआईएस की वास्तविक स्थापना के रूप में मान्य प्रविष्टियों को मान्य नहीं लगता है।

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

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

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

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


विजुअल स्टूडियो 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 में अपग्रेड करने का प्रयास करते समय मुझे समस्याएं थीं और महसूस किया कि मेरी कोई भी कॉन्फ़िगरेशन नहीं चल रही थी।


आईआईएस एक्सप्रेस के साथ विजुअल स्टूडियो 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 खोलें (आमतौर पर मेरे दस्तावेज़ \ IIS एक्सप्रेस \ 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>
    

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


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

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

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

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']

मैं एक "अनइंस्टॉल" बैट फ़ाइल भी बनाउंगा जो इन बाइंडिंग को साफ़ कर देगा .. (क्योंकि अक्सर बार मैं सिर्फ 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']

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


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

आईआईएस एक्सप्रेस में वर्डप्रेस मल्टीसाइट सेटअप के लिए मुझे कस्टम डोमेन की आवश्यकता थी, लेकिन जब तक मैंने वेबमैट्रिक्स / विजुअल स्टूडियो को व्यवस्थापक के रूप में नहीं चलाया तब तक कुछ भी काम नहीं किया। तब मैं एक ही आवेदन में सबडोमेन बांधने में सक्षम था।

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

फिर http://whatever.localhost:12345/ जा रहा है http://whatever.localhost:12345/ चलाएगा।


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

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

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

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


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

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

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

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

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

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



ऊपर जेसा फ्लिंट की तरह, मैं मैन्युअल रूप से .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"

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


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

C:\Users\usr\Documents\IISExpress\config द्वारा उत्पन्न: applicationhost.config C:\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>
  • Administrator रूप में चलाने के लिए IISExpress सेट करें ताकि वह बाहरी पते से जुड़ सके (स्थानीय होस्ट नहीं)
  • एक Administrator रूप में विजुअल स्टूडियो चलाएं ताकि यह प्रक्रिया को बाध्यकारी होने की अनुमति देने वाले व्यवस्थापक के रूप में शुरू कर सके।

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

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


क्या हम कोशिश नहीं कर सकते हैं और देख सकते हैं कि आईआईएस एक्सप्रेस की एक या अधिक सीमा काम करती है या नहीं, अगर यह काम करती है तो यह आईआईएस एक्सप्रेस नहीं है। उदाहरण आईआईएस एक्सप्रेस शेयरपॉइंट सेवाओं का समर्थन नहीं करता है





iis iis-7 iis-express