मैं IIS एक्सप्रेस में दूरस्थ अनुरोध कैसे सक्षम कर सकता हूं? स्कॉट गुथ्री ने लिखा कि यह संभव है लेकिन उन्होंने यह नहीं बताया कि कैसे।
मैं IIS एक्सप्रेस में दूरस्थ अनुरोध कैसे सक्षम कर सकता हूं? स्कॉट गुथ्री ने लिखा कि यह संभव है लेकिन उन्होंने यह नहीं बताया कि कैसे।
जवाबों:
IIS टीम साइट पर अब एक ब्लॉग पोस्ट है जो यह बता रहा है कि IIS एक्सप्रेस पर दूरस्थ कनेक्शन कैसे सक्षम करें । यहाँ उस पोस्ट का संक्षिप्त भाग संक्षेप में प्रस्तुत किया गया है:
Vista और Win7 पर, एक प्रशासनिक प्रॉम्प्ट से निम्न आदेश चलाएँ:
netsh http add urlacl url=http://vaidesg:8080/ user=everyone
XP के लिए, पहले Windows XP सर्विस पैक 2 सहायता उपकरण स्थापित करें। फिर एक प्रशासनिक प्रॉम्प्ट से निम्न कमांड चलाएँ:
httpcfg set urlacl /u http://vaidesg1:8080/ /a D:(A;;GX;;;WD)
netsh
पर कनेक्शन देने की आज्ञा है ?
user={PARAM_USER}
आपकी भाषा में पैरामीटर होगा।
user=todos
इसके बजाय उपयोग करें user=everyone
।
तीन बदलाव हैं जिन्हें आपको करने की आवश्यकता हो सकती है।
.config
फाइल में। आमतौर पर:
$(solutionDir)\.vs\config\applicationhost.config
%userprofile%\My Documents\IISExpress\config\applicationhost.config
अपनी साइट के बाध्यकारी तत्व का पता लगाएं, और जोड़ें
<binding protocol="http" bindingInformation="*:8080:*" />
netsh http add urlacl url=http://*:8080/ user=everyone
जहां everyone
एक विंडोज़ समूह है। "टाउट ले मोंडे" जैसी जगहों के समूहों के लिए दोहरे उद्धरण चिह्नों का उपयोग करें।
Windows फ़ायरवॉल के माध्यम से IIS एक्सप्रेस की अनुमति दें।
उन्नत सुरक्षा / इनबाउंड नियम / नए नियम के साथ प्रारंभ / विंडोज फ़ायरवॉल ...
कार्यक्रम
%ProgramFiles%\IIS Express\iisexpress.exe
या पोर्ट 8080 टीसीपी
अब जब आप शुरू करते हैं तो आपको iisexpress.exe
एक संदेश देखना चाहिए जैसे कि
सफलतापूर्वक पंजीकृत URL "http: // *: 8080 /" साइट के लिए "हैलो वर्ल्ड" एप्लिकेशन "/"
users=everyone
के लिए netsh
(दूसरे चरण) त्रुटि 1789 समाधान अनुवाद करने के लिए है कारण हो सकता है everyone
अपनी भाषा में इसी समूह का नाम है।
Project Url
, अगर मैं होस्टनाम के लिए एक तारांकन चिह्न दर्ज करता हूं तो यह एक त्रुटि देता है। अगर मैं कुछ और दर्ज करता हूं, तो यह एक नई वर्चुअल निर्देशिका बनाने की कोशिश करता है। यह Application.config में प्रविष्टि से लिंक नहीं करता है।
bindingInformation="*:8080:hostname"
और चरण 2 में अपने कंप्यूटर के होस्टनाम का उपयोग करना होगा url=http://hostname:8080/
, और वेब टैब सेट प्रोजेक्ट Url पर अपने Visual Studio वेब प्रोजेक्ट गुणों में http://hostname:8080/
। *
यदि आप पहले से ही एक बनाया है, तो urlacl को हटा दें ; यदि आपके पास दोनों हैं तो यह काम नहीं करेगा। अंत में, आप अपने वेब ब्राउजर में जाने वाले URL को होस्टनाम का संदर्भ देना होगा, न कि लोकलहोस्ट का।
<binding protocol="http" bindingInformation="*:8080:localhost" />
मुझे याद है कि कुछ महीनों पहले इस वर्कफ़्लो को आज़माते हुए उसी समस्याओं में भागना पड़ा था।
यही कारण है कि मैंने विशेष रूप से इस तरह के परिदृश्य के लिए एक साधारण प्रॉक्सी उपयोगिता लिखी: https://github.com/icflorescu/iisexpress-proxy ।
IIS एक्सप्रेस प्रॉक्सी का उपयोग करना , यह सब काफी सरल हो जाता है - "netsh http जोड़ने के लिए urlacl url = vaidesg: 8080 / user = हर कोई" या अपने "Applicationhost.config" के साथ गड़बड़ करने की कोई आवश्यकता नहीं है।
बस इसे कमांड प्रॉम्प्ट में जारी करें:
iisexpress-proxy 8080 to 3000
… और फिर आप अपने दूरस्थ उपकरणों को http: // vaidesg: 3000 पर इंगित कर सकते हैं ।
ज्यादातर समय सरल आईएस बेहतर है।
मेरे लिए कुछ भी काम नहीं किया जब तक कि मुझे iisexpress -xy नहीं मिला ।
व्यवस्थापक के रूप में कमांड प्रॉम्प्ट खोलें, फिर चलाएँ
npm install -g iisexpress-proxy
फिर
iisexpress-proxy 51123 to 81
आपके Visual Studio प्रोजेक्ट को स्थानीयहोस्ट पर खोला जाता है: 51123 और आप बाहरी IP पते पर पहुँचना चाहते हैं xxxx: 81
संपादित करें: मैं वर्तमान में उपयोग कर रहा हूं ngrok
इस के लिए एक पहेली के रूप में:
netsh http add urlacl url=http://vaidesg:8080/ user=everyone
यह केवल विंडोज के अंग्रेजी संस्करणों पर काम करेगा। यदि आप एक स्थानीयकृत संस्करण का उपयोग कर रहे हैं, तो आपको "हर किसी" को किसी और चीज़ से बदलना होगा, उदाहरण के लिए:
अन्यथा आपको एक त्रुटि मिलेगी (SDDL विफल, त्रुटि: 1332 बनाएँ)
एक अच्छा संसाधन एसएस के साथ विकास के समय पर काम कर रहा है स्कॉट हैसेलमैन द्वारा IISExpress के साथ आसान है ।
पोर्ट 80 पर बाहरी सेवा देने के लिए IIS एक्सप्रेस प्राप्त करना अनुभाग के बाद क्या है
यदि आप Visual Studio के साथ काम कर रहे हैं, तो IP-Adress पर IIS-Express का उपयोग करने के लिए इन चरणों का पालन करें:
ipconfig
विंडोज कमांड लाइन मेंके लिए जाओ
$(SolutionDir)\.vs\config\applicationHost.config
खोज
<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>
जोड़ें:
<binding protocol="http" bindingInformation="*:62549:192.168.178.108"/>
अपने आईपी-एड्रेस के साथ
मैंने इसे Visual Studio Professional 2015 में "Conveyor by Keyoti" की स्थापना के साथ हल किया है। Conveyor एक पोर्ट (45455) के साथ एक REMOTE पता (आपका IP) उत्पन्न करता है जो बाहरी अनुरोध को सक्षम करता है। उदाहरण:
कन्वेयर आपको अपने नेटवर्क पर बाहरी टैबलेट और फोन से या एंड्रॉइड एमुलेटर से (बिना) वेब अनुप्रयोगों का परीक्षण करने की अनुमति देता है http://10.0.2.2:<hostport>
)
चरण निम्नलिखित लिंक में हैं:
https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti
यदि आपने कर्नल पैनिक के उत्तर की कोशिश की है, लेकिन विजुअल स्टूडियो में काम नहीं करता है, तो यह कोशिश करें:
<binding />
अपने IIS एक्सप्रेस कॉन्फ़िगरेशन में एक और जोड़ें
<bindings>
<binding protocol="http" bindingInformation="*:8080:localhost" />
<binding protocol="http" bindingInformation="*:8080:hostname" />
</bindings>
अंत में, आपको विजुअल स्टूडियो को एडमिन के रूप में चलाना होगा
किसने मेरी मदद की, 'IISExpress' आइकन, 'सभी एप्लिकेशन दिखाएं' पर क्लिक करना सही था। फिर वेबसाइट का चयन करना और मैंने देखा कि यह किस aplicationhost.config का उपयोग करता है, और सुधार पूरी तरह से चला गया।
यह मैंने http और https दोनों के साथ दूरस्थ पहुंच को सक्षम करने के लिए विजुअल स्टूडियो 2015 के साथ विंडोज 10 के लिए किया था:
पहला कदम आपके आवेदन को आपके आंतरिक आईपी पते से बांधना है। पता पाने के लिए cmd
-> चलाएं ipconfig
। फ़ाइल खोलें /{project folder}/.vs/config/applicationhost.config
और तब तक नीचे स्क्रॉल करें जब तक आपको ऐसा कुछ न मिले:
<site name="Project.Web" id="2">
<application path="/">
<virtualDirectory path="/" physicalPath="C:\Project\Project.Web" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:12345:localhost" />
</bindings>
</site>
के तहत दो नए बाइंडिंग जोड़ें bindings
। आप चाहें तो HTTPS का उपयोग कर सकते हैं:
<binding protocol="http" bindingInformation="*:12345:192.168.1.15" />
<binding protocol="https" bindingInformation="*:44300:192.168.1.15" />
अपने फ़ायरवॉल में निम्न नियम जोड़ें, cmd
व्यवस्थापक के रूप में एक नया प्रॉम्प्ट खोलें और निम्न आदेश चलाएँ:
netsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=12345 profile=private remoteip=localsubnet action=allow
netsh advfirewall firewall add rule name="IISExpressWebHttps" dir=in protocol=tcp localport=44300 profile=private remoteip=localsubnet action=allow
अब Visual Studio को इस रूप में शुरू करें Administrator
। वेब प्रोजेक्ट प्रोजेक्ट फ़ाइल पर राइट क्लिक करें और चुनें Properties
। Web
टैब पर जाएं , और क्लिक करें Create Virtual Directory
। यदि Visual Studio व्यवस्थापक के रूप में नहीं चलाया जाता है, तो यह संभवतः विफल हो जाएगा। अब सब कुछ काम करना चाहिए।
इस सवाल का स्वीकृत उत्तर IIS एक्सप्रेस को वेबमैट्रिक्स के साथ काम करने के लिए एक गाइड है। मुझे यह मार्गदर्शिका तब अधिक उपयोगी लगी जब इसे वीएस 2010 के साथ काम करने की कोशिश की गई।
मैंने सिर्फ 3 और 4 के चरणों का पालन किया (IIS एक्सप्रेस को प्रशासक के रूप में चलाना) और इसे काम करने के लिए अपने फ़ायरवॉल को अस्थायी रूप से अक्षम करना पड़ा।
आप अपने IIS एक्सप्रेस कॉन्फिगर को संशोधित करने, नए HTTP.sys नियमों को जोड़ने या एक व्यवस्थापक के रूप में विज़ुअल स्टूडियो चलाने के बजाय पोर्ट फ़ॉरवर्डिंग स्थापित करने का प्रयास कर सकते हैं।
मूल रूप से आपको IP:PORT
अपनी वेबसाइट को अपनी मशीन पर किसी अन्य मुफ्त पोर्ट पर चलाने की जरूरत है , लेकिन स्थानीय नेटवर्क एडॉप्टर पर, लोकलहोस्ट पर नहीं।
बात यह है कि IIS एक्सप्रेस (विंडोज 10 पर कम से कम) का [::1]:port
अर्थ है कि यह IPv6 पोर्ट पर सुनता है। आपको इसे ध्यान में रखना होगा।
यहां मैंने बताया कि मैंने यह काम कैसे किया है - http://programmingflow.com/2017/02/25/iis-express-on-extern-in.html
आशा है ये मदद करेगा।
सबसे सरल और सबसे अच्छा तरीका जो मुझे मिला वह था उपयोग करने के लिए (सेटअप करने में 2 मिनट लगते हैं):
यह लोकलहोस्ट पर चलने वाली किसी भी चीज के साथ काम करेगा। बस साइनअप, थोड़ा बहाना चलाने के लिए और जो कुछ भी आप लोकलहोस्ट पर चलाते हैं वह सार्वजनिक URL हो जाता है जिसे आप कहीं से भी एक्सेस कर सकते हैं।
यह आपकी दूरस्थ टीम के साथी को सामान दिखाने के लिए अच्छा है, IIS सेटअप या फ़ायरवॉल के साथ कोई फ़िडलिंग नहीं। निष्पादन योग्य को समाप्त करने के लिए पहुँच को रोकना चाहते हैं।
ngrok authtoken xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ngrok http -host-header=localhost 89230
यह मानते हुए कि 89230 आपका IIS एक्सप्रेस पोर्ट है
फ्री प्लान पर भी आप कई पोर्ट चला सकते हैं
मुझे 8.1 और बाहरी अनुरोध में IIS एक्सप्रेस का उपयोग करने में कुछ समस्याएं हैं।
मैं बाहरी अनुरोध को डीबग करने के लिए इस चरण का पालन करता हूं:
यह काम कर रहा है!
यदि आप व्यवस्थापक से विजुअल स्टूडियो चलाते हैं तो आप बस जोड़ सकते हैं
<binding protocol="http" bindingInformation="*:8080:*" />
या
<binding protocol="https" bindingInformation="*:8443:*" />
में
%userprofile%\My Documents\IISExpress\config\applicationhost.config
$(SolutionDir).vs\config\applicationHost.config
भी लागू किया और मुझे विंडोज फ़ायरवॉल में एप्लिकेशन के पोर्ट (8443) को खोलना पड़ा।
मैंने एक स्थानीय IIS सक्षम किया था, इसलिए मैंने सिर्फ अपने डिबगिंग पोर्ट के लिए एक पुनर्लेखन नियम बनाया ... मुझे लगता है कि यह अन्य विधि की तुलना में बेहतर और कूलर है, क्योंकि इसे विकसित करने के बाद एक बार निकालना आसान होता है ... यहां बताया गया है कि पुनर्लेखन कैसा दिखता है। ।
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="^dev/(.*)" />
<action type="Rewrite" url="http://localhost:47039/{R:1}" />
</rule>
</rules>
</rewrite>
वीएस आपको सीधे अपने स्थानीय आईआईएस का उपयोग करके विकसित करने की अनुमति देता है (जो तब दूरस्थ कनेक्शन की अनुमति देता है) लेकिन बदले में आपको इसे हमेशा एक व्यवस्थापक के रूप में चलाना होगा ... मुझे ऐसा नहीं करना चाहिए।
मैंने रिवर्स प्रॉक्सी दृष्टिकोण का उपयोग करके इस समस्या को हल किया।
मैंने wamp सर्वर स्थापित किया है और अपाचे वेब सर्वर की सरल रिवर्स प्रॉक्सी सुविधा का उपयोग किया है।
मैंने अपाचे वेब सर्वर (8081) को सुनने के लिए एक नया पोर्ट जोड़ा। फिर मैंने उस पोर्ट के लिए virtualhost के रूप में प्रॉक्सी कॉन्फ़िगरेशन जोड़ा।
<VirtualHost *:8081>
ProxyPass / http://localhost:46935/
ProxyPassReverse / http://localhost:46935/
</VirtualHost>
मैंने ये सभी कदम उठाए और कुछ भी मेरी मदद नहीं की। और मुझे क्या चाहिए, यह सिर्फ आईआईएस एक्सप्रेस के माध्यम से अपना ऐप चलाने के लिए है ...
आशा है ये मदद करेगा।
मैं अपने स्थानीय नेटवर्क में अन्य उपयोगकर्ताओं के लिए iis अनुरोधों की सेवा करने में असमर्थ था, मुझे केवल इतना करना था (उपरोक्त के अलावा) अपने बीटी हब राउटर को पुनरारंभ करना था।
यह बेहद भयानक है और यहां तक कि सुंदर डोमेन नामों के साथ HTTPS को भी कवर करता है:
http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx
वास्तव में भयानक भागों मैं SO पर कहीं और नहीं मिल सकता है अगर उपरोक्त लिंक कभी दूर हो जाता है:
> C:\Program Files (x86)\IIS Express>IisExpressAdminCmd.exe Usage:
> iisexpressadmincmd.exe <command> <parameters> Supported commands:
> setupFriendlyHostnameUrl -url:<url>
> deleteFriendlyHostnameUrl -url:<url>
> setupUrl -url:<url>
> deleteUrl -url:<url>
> setupSslUrl -url:<url> -CertHash:<value>
> setupSslUrl -url:<url> -UseSelfSigned
> deleteSslUrl -url:<url>
>
> Examples: 1) Configure "http.sys" and "hosts" file for friendly
> hostname "contoso": iisexpressadmincmd setupFriendlyHostnameUrl
> -url:http://contoso:80/ 2) Remove "http.sys" configuration and "hosts" file entry for the friendly hostname "contoso": iisexpressadmincmd
> deleteFriendlyHostnameUrl -url:http://contoso:80/
उपरोक्त उपयोगिता आपके लिए एसएसएल प्रमाणपत्र पंजीकृत करेगी! यदि आप -UseSelfSigned विकल्प का उपयोग करते हैं, तो यह सुपर आसान है।
यदि आप चीजों को कठिन तरीके से करना चाहते हैं, तो गैर-स्पष्ट हिस्सा आपको HTTP.SYS को यह बताने की आवश्यकता है कि इस तरह का क्या उपयोग करना है:
netsh http add sslcert ipport=0.0.0.0:443 appid={214124cd-d05b-4309-9af9-9caa44b2b74a} certhash=YOURCERTHASHHERE
सर्थश "थम्बप्रिंट" है जिसे आप एमएमसी में प्रमाणपत्र गुणों से प्राप्त कर सकते हैं।
मैंने निम्नलिखित किया और कनेक्ट करने में सक्षम था:
1) स्थानीय होस्ट से '*' के लिए IIS एक्सप्रेस कॉन्फिगर बाइंडिंग परिवर्तित
बाइंडिंग प्रोटोकॉल = "http" बाइंडिंग इनफॉर्मेशन = "*: 8888: *"
2) प्रोटोकॉल प्रकार के लिए विशेष पोर्ट की अनुमति देने के लिए फ़ायरवॉल पर इनबाउंड नियम को परिभाषित करें: tcp
3) अपने पोर्ट के लिए नेटवर्क कॉन्फ़िगरेशन जोड़ने के लिए निम्नलिखित कमांड जोड़ें: netsh http urlacl url = http: // *: 8888 / user = हर कोई जोड़ें
[परियोजना गुण संवाद]
VisualStudio 2017 और NetCore API-प्रोजेक्ट का उपयोग कर विकास के लिए:
1) सीएमडी-बॉक्स में: आईपी-एड्रेस निर्धारित करने के लिए ipconfig / all
2a) प्रोजेक्ट गुण-> डिबग टैब में पुनर्प्राप्त आईपी-पता दर्ज करें
2 बी) एक पोर्ट का चयन करें और चरण 2 ए से आईपी पते पर संलग्न करें।
3) चयनित पोर्ट पर आने वाले टीसीपी-ट्रैफिक की अनुमति देने के लिए फ़ायरवॉल में एक अनुमति नियम जोड़ें (मेरा फ़ायरवॉल एक डायलॉग के साथ चालू होता है: "फ़ायरवॉल पर नियम जोड़ें या जोड़ें")। उस मामले में जोड़ देगा चाल।
उपरोक्त समाधान का नुकसान:
1) यदि आप एक गतिशील आईपी-पते का उपयोग करते हैं तो आपको एक और आईपी-पता असाइन किए जाने की स्थिति में उपरोक्त चरणों को फिर से करने की आवश्यकता है।
2) आपके पास अब एक खुला पोर्ट है जिसे आप भूल सकते हैं, लेकिन यह खुला बंदरगाह अवांछित मेहमानों के लिए एक आमंत्रण है।