VS2010 परियोजना के लिए बाहरी पहुँच के लिए IIS एक्सप्रेस कॉन्फ़िगर करें


103

मैं VS2010 में एक परियोजना विकसित कर रहा हूं और अपनी साइट को आईआईएस एक्सप्रेस के माध्यम से स्थानीय रूप से देखने में सक्षम हूं। मैं नेटवर्क पर बाहरी पहुंच को सक्षम करना चाहूंगा।

मेरे सभी शोधों ने मुझे इस ब्लॉग प्रविष्टि पर भेजा है: http://blogs.iis.net/vaidyg/archive/2010/07/29/serves-external-traffic-with-webmatrix-beta.aspx , जो मददगार है - दृश्य स्टूडियो में शुरू की गई परियोजना के लिए बाइंडिंग को कॉन्फ़िगर करने के तरीके को दिखाने के लिए प्रतीत नहीं होता है (मैं स्क्रीनशॉट में स्क्रीन नहीं ढूंढ सकता हूं, और मैंने Applicationhost.config में बाइंडिंग जानकारी संपादित की है, लेकिन जब मैं साइट से चलाता हूं तो यह प्रतिबिंबित नहीं होता है दृश्य स्टूडियो)।


10
कृपया स्कॉट हैन्समैन
balexandre

जवाबों:


136

1 Applicationhost.config फ़ाइल (अपने दस्तावेजों में IISExpress फ़ोल्डर में स्थित) के संपादन के बाद, आपकी साइट बाइंडिंग निम्नानुसार होनी चाहिए:

<bindings>
  <binding protocol="http" bindingInformation="*:8080:*" />
</bindings>

बाइंडिंग में तीन भाग होते हैं। सबसे पहले एक आईपी पता या सूची, या इस मामले में, एक वाइल्डकार्ड। दूसरा पोर्ट नंबर, और तीसरा एक होस्टनाम, या सूची, या वाइल्डकार्ड ( Hostहेडर द्वारा फ़िल्टर करने के लिए )। विकास के उद्देश्यों के लिए, एक वाइल्डकार्ड यहां सबसे उपयुक्त है क्योंकि आप संभवतः एक अद्वितीय पोर्ट का उपयोग कर रहे हैं।

2 क्योंकि आप गैर-लोकलहोस्ट बंधन का उपयोग कर रहे हैं, अतिरिक्त अनुमतियों की आवश्यकता है। आप VS को व्यवस्थापक के रूप में चला सकते हैं, या अधिमानतः आपको आवश्यक अनुमति देने के लिए URL ACLs जोड़ना चाहिए । नीचे दिए गए उदाहरण में अनुमति सभी को दी गई है, लेकिन आप अपने स्वयं के उपयोगकर्ता नाम का उपयोग कर सकते हैं।

नोट:urlacl जरूरी वास्तव में बंधन से मेल खाते हैं। एक के urlaclलिए http://*:8080एक बाध्यकारी की अनुमति देगा *:8080:*, लेकिन एक बंधन नहीं है, *:8080:localhostभले ही बाद वाला पूर्व का सबसेट हो। इसका मतलब यह है कि, अगर वाइल्डकार्ड का उपयोग करने के बजाय, आप होस्ट हेडर को सूचीबद्ध करते हैं applicationhost.config, तो आपको urlaclप्रत्येक के लिए एक मिलान जोड़ना होगा ।

बाहरी ट्रैफ़िक के लिए HTTP.sys को कॉन्फ़िगर करने के चरण एक आरक्षित पोर्ट का उपयोग करने के लिए एक साइट स्थापित करने के समान हैं। Windows 7 या Windows Vista पर, एक उन्नत कमांड प्रॉम्प्ट से, निम्न कमांड चलाएँ:

netsh http add urlacl url=http://*:8080/ user=DOMAIN\username

Windows XP पर, निम्न कमांड को एक उन्नत कमांड प्रॉम्प्ट से चलाएं:

httpcfg set urlacl /u http://*:8080/ /a D:(A;;GX;;;WD)

नोट 2 यदि VS को व्यवस्थापक के रूप में चलाने या ACL प्रविष्टियों को जोड़ने से आपकी समस्या हल नहीं होती है, तो IIS एक्सप्रेस को कमांड लाइन से चलाएं और जांचें कि क्या कोई बाध्यकारी पंजीकरण विफलता संदेश हैं। कमांड लाइन से शुरू करने के लिए, यह कमांड दें:

iisexpress.exe /site:"your-site-name"

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

"इनबाउंड नियम" के तहत "नया नियम ..." चुनें।

  • नियम प्रकार "कस्टम" है।
  • कार्यक्रम सेवाएँ है-> अनुकूलित करें ...-> केवल सेवाओं पर लागू करें। (हालांकि आईआईएस एक्सप्रेस एक सेवा नहीं है, लेकिन HTTP मल्टीप्लेक्स इसका उपयोग करता है)।
  • प्रोटोकॉल टीसीपी है
  • विशिष्ट पोर्ट: अपने सभी IIS एक्सप्रेस बाइंडिंग के लिए सभी पोर्ट सूचीबद्ध करें। आप इस नियम पर वापस आ सकते हैं और किसी भी समय पोर्ट जोड़ सकते हैं। (यदि यह थकाऊ हो जाता है, तो आप एक रेंज जोड़ सकते हैं जैसे कि 40000-65534विजुअल स्टूडियो द्वारा उपयोग की जाने वाली पूरी रेंज को कवर करता है, लेकिन ध्यान रखें कि यह कम सुरक्षित है)।
  • कार्रवाई "कनेक्शन की अनुमति दें" है
  • प्रोफ़ाइल निम्न में से एक होगी। यदि संदेह है, तो "डोमेन + निजी" चुनें।
    • "डोमेन", यदि आपका एक कॉर्पोरेट डेस्कटॉप है और केवल स्थानीय डोमेन पर चल रहा है
    • "डोमेन + निजी" यदि आपका एक गैर-कॉर्पोरेट वातावरण में एक निजी विकास मशीन है, या एक कॉर्पोरेट लैपटॉप जिसे घर से काम करते समय भी काम करना पड़ता है।
    • "डोमेन, निजी और सार्वजनिक", यदि आपको गैर-निजी नेटवर्क पर प्रदर्शन करने की आवश्यकता है।
  • नाम कुछ ऐसा होना चाहिए जैसे "IIS एक्सप्रेस देव सर्वर"

12
@ user578913 इसलिए मैंने आखिरकार चल रही IIS एक्सप्रेस टास्कबार चीज़ को खोलकर और उस पर क्लिक करने के बाद config फाइल के लिंक पर जाकर सही applicationhost.config फ़ाइल ढूंढ ली। मैंने दूसरी पंक्ति में बंदरगाह को 1063 पर सेट किया, जैसा कि पहली पंक्ति में सेट किया गया था। आपकी कमांड लाइन दौड़ी, और सब कुछ ठीक लगा। जब मैं मशीन-नाम या मशीन-नाम पर जाता हूं: नेटवर्क पर किसी अन्य मशीन से 1063 , तब भी मुझे कुछ नहीं मिलता है।
स्नैपी

15
ठीक है, क्योंकि विज़ुअल स्टूडियो एक पोर्ट (8080 के अलावा) असाइन करता है, विंडोज फ़ायरवॉल इसे रोक रहा था। विंडोज फ़ायरवॉल को बंद करने के बाद (मैं यकीनन सिर्फ पोर्ट खोल सकता था, लेकिन मैं एक सुरक्षित नेटवर्क पर हूं) और मशीन के नाम के बजाय मेरी मशीन के आईपी का उपयोग कर रहा था। धन्यवाद। मैं मतदान करूंगा, लेकिन अभी तक प्रतिनिधि नहीं है (
Marumpy

3
हां, अगर विंडोज फ़ायरवॉल को चालू करने की आवश्यकता है, तो आप स्पष्ट रूप से टीसीपी पोर्ट 8080 (या जो आप उपयोग करते हैं) जोड़ सकते हैं। विंडोज 7 में, शुरू में मैंने "IIS एक्सप्रेस वर्कर प्रोसेस" को पोर्ट असाइन करने की कोशिश की। लेकिन यह काम नहीं आया। मुझे "न्यू रूल" विकल्प का उपयोग करना था और पोर्ट 8080 की अनुमति देना था। प्रोफ़ाइल (डोमेन, निजी, सार्वजनिक) का चयन भी महत्वपूर्ण है।
गौतम जैन

2
नोट टू सेल्फ: अगर आपको एक्सेस डेनिएड मिलता है, तो विजुअल स्टूडियो को एडमिन के रूप में चलाएं
nVentimiglia

3
VS2015 के रूप में, फ़ाइल स्थान है C:\<Path\To\Solution>\.vs\config\applicationhost.config। (साभार, @ टालन)
सूंई

29

मैंने इस मुद्दे पर भी घंटों बिताए, अपने एंड्रॉइड Xoom से अपने win7 देव मशीन में ब्राउज़ करने की कोशिश कर रहा था, इसलिए मैं अपने द्वारा बनाए गए एक नए asp.net वेब ऐप का परीक्षण कर सकता था। मैंने अपनी नई साइट के लिए PC होस्टनाम को PC के वर्तमान IP पते का उपयोग करने से IISExpress के Applicationhost.config को बदल दिया था।

<binding protocol="http" bindingInformation="*:80:dev-Lee" />

सेवा

<binding protocol="http" bindingInformation="*:80:192.168.1.102" /> 

एक बार जब मैंने यह किया और IISExpress को फिर से शुरू किया ... मैं अपने देव-ली मशीन पर ब्राउज़ करने और अपने Xoom से अपना ऐप देखने में सक्षम था!


10
इन सभी समाधानों के साथ मुझे एक त्रुटि 400 - खराब अनुरोध है। कोई सुझाव?
क्रुमेलूर

2
@Krumelur, सुनिश्चित करें कि आपने सही applicationhost.config फ़ाइल को संपादित किया है। मेरे दस्तावेज़ फ़ोल्डर में एक।
कोडर

14

हम IIS एक्सप्रेस के Applicationhost.config को संपादित करके कई बाध्यकारी पते जोड़ सकते हैं

<bindings>
   <binding protocol="http" bindingInformation="*:62217:localhost" />
   <binding protocol="http" bindingInformation="*:62217:192.168.0.5" />
   <binding protocol="http" bindingInformation="*:62218:192.168.0.5" />
</bindings>

अब हम आईपी पते का उपयोग करके लैन से वेब साइट तक पहुंच सकते हैं।

IIS एक्सप्रेस का उपयोग करके लैन से स्थानीय साइटों तक पहुँचना


6

Visual Studio 2013 SP1 और ऊपर (2015) में "सभी उपयोगकर्ताओं के लिए सर्वर सेटिंग्स लागू करें" (प्रोजेक्ट फ़ाइल में स्टोर) सेटिंग शामिल है। यह डिफ़ॉल्ट रूप से सक्षम है। जब सक्षम विज़ुअल स्टूडियो कमांड लाइन तर्क के साथ IIS एक्सप्रेस लॉन्च करता है जो इसे एक अलग कॉन्फ़िगरेशन फ़ाइल का उपयोग करता है। 'Applicationhost.config' फ़ाइल का स्थान '.vs \ config' परियोजना निर्देशिका के अंतर्गत है।


1
हां, मेरे मामले में यही समस्या थी - मैंने एक गलत फाइल को संपादित करने की कोशिश की। जैसा कि होता है, आप देख सकते हैं कि ट्रे आइकन पर क्लिक करके, सभी ऐप को सूचीबद्ध करने और अपना चयन करने के लिए आपके IIS एक्सप्रेस ऐप का कॉन्फिगर कहां है। कॉन्फ़िगर फ़ाइल का पथ नीचे लिखा जाएगा। मेरा .vs \ config
दुष्टकोल

1
हां, मेरे लिए वही। आपका बहुत बहुत धन्यवाद।
वास

2

हमने एक नि: शुल्क वीएस (2012, 2013, 2015) एक्सटेंशन का निर्माण किया, जिसे कॉन्वोर कहा जाता है, जो इसे अनुमति देता है - आप इसे टूल-> एक्सटेंशन ... वीएस में मेनू या गैलरी साइट https://visualstudiogallery.msdn.microsoft पर देख सकते हैं। com / a429dbb7-a982-4541-b401-934375c02c0f? src = होम


1
यह शानदार और स्थापित करना इतना आसान है। काम के लिए धन्यवाद!
पॉवेल्लोग्राम

1

यदि आप Visual Studio के साथ काम कर रहे हैं, तो IP-Adress पर IIS-Express का उपयोग करने के लिए इन चरणों का पालन करें:

  1. अपने होस्ट आईपी-एड्रेस प्राप्त करें: ipconfigविंडोज कमांड लाइन में
  2. GoTo $ (SolutionDir) .vs \ config \ applicationHost.config
  3. खोज
    <site name="WebApplication3" id="2"> <application path="/" applicationPool="Clr4IntegratedAppPool"> <virtualDirectory path="/" physicalPath="C:\Users\user.name\Source\Repos\protoype-one\WebApplication3" /> </application> <bindings> <binding protocol="http" bindingInformation="*:62549:localhost" /> </bindings> </site>
  4. जोड़ें: <binding protocol="http" bindingInformation="*:62549:192.168.178.108"/>
    अपने आईपी-एड्रेस के साथ
  5. अपने विजुअल स्टूडियो को प्रशासक के अधिकारों के साथ चलाएं और सब कुछ काम करना चाहिए
  6. यदि आप रिमोट से कनेक्ट करने का प्रयास करते हैं तो शायद कुछ फ़ायरवॉल मुद्दों की तलाश करें

सुराग है, कि विजुअल स्टूडियो को खुद की ApplicationHost.config फ़ाइल मिल गई है!


0

मुझे विजुअल स्टूडियो 2012 से काम करने में बहुत परेशानी हुई, मैं 404 त्रुटियों से 503 त्रुटियों तक गया। आखिरकार मेरे लिए क्या काम किया, IIS एक्सप्रेस कॉन्फ़िगरेशन में सभी संबंधित कॉन्फ़िगरेशन को मिटा देना था ...

"\Program Files (x86)\IIS Express\appcmd.exe" list site
"\Program Files (x86)\IIS Express\appcmd.exe" delete site xxx
"\Program Files (x86)\IIS Express\appcmd.exe" delete site yyy

फिर मैंने VS में अपने वेब प्रोजेक्ट में गुण पृष्ठ से एक नई आभासी निर्देशिका बनाई, लेकिन इससे पहले कि मैं आभासी निर्देशिका बनाऊं मैंने होस्टनाम को http: // myhost: 80 / में बदल दिया। फिर वर्चुअल निर्देशिका बनाएं बटन दबा दिया। पहले मुझे यह कहते हुए त्रुटियाँ हो रही थीं कि होस्टनाम 'लोकलहोस्ट' होना चाहिए लेकिन इस बार ऐसा नहीं हुआ। और उसके बाद, यह काम किया।

संक्षेप में, पहले मौजूदा कॉन्फिगर को बाहर करें और फिर से शुरू करें।


-2

यदि आप बाहरी डोमेन "name.mydyndns.com" है, तो आपको लिखना होगा:

<binding protocol="http" bindingInformation="*:name.mydyndns.com" />

यह विंडोज 2003 सर्वर और IIS 7.5 एक्सप्रेस पर काम करता है।


-3

स्क्रीनशॉट

IIS सेट पर एप्लिकेशन पूल में "32-बिट एप्लिकेशन सक्षम करें" को "सही" पर सेट करें।


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