IIS से अधिक Visual Studio डीबगिंग IIS एक्सप्रेस सर्वर से कनेक्ट कर रहा है


84

मेरे पास एक परीक्षण ASP.NET MVC3 अनुप्रयोग है जो VS2012 में विकसित किया गया है। जब मैं डिबग करना शुरू करता हूं, तो एप्लिकेशन को अनुरोध के माध्यम से होस्ट मशीन से एक्सेस किया जाता है http://localhost:<portnumber>। लेकिन अगर मैं इंट्रानेट में रिमोट मशीन से एक ही एप्लिकेशन को http://<ip>:<portnumber>I के माध्यम से एक्सेस करने की कोशिश करता हूं, तो HTTP error 400: Bad request. Invalid Host Name.जहां तक ​​यह IIS एक्सप्रेस पर चलता है, कोई भी सर्वर कॉन्फ़िगरेशन अप्राप्य है।

क्या इसे हल करने के कोई तरीके हैं?


इस मार्केटप्लेस को करने के लिए हमारे मुफ्त एक्सटेंशन, कन्वर्टर का उपयोग करें ।visualstudio.com/ ... यह बिना किसी विन्यास परिवर्तन, दर्द रहित कार्य करता है।
जिम डब्ल्यू का कहना है कि मोनिका

जवाबों:


138

अपडेट करें

मैंने एक वीडियो बनाया है जो प्रक्रिया का बेहतर वर्णन करता है, https://youtu.be/5ZqDuvTqQVs

यदि आप Visual Studio 2013 या इसके बाद के संस्करण का उपयोग कर रहे हैं, तो सुनिश्चित करें कि आप इसे काम करने के लिए व्यवस्थापक के रूप में चलाते हैं।


%USERPROFILE%\My Documents\IISExpress\config\applicationhost.config(VS2015 में यह हो सकता है $(solutionDir)\.vs\config\applicationhost.config) फ़ाइल खोलें । अंदर आपको कुछ इस तरह से देखना चाहिए:

<site name="WebSite1" id="1" serverAutoStart="true">
    <application path="/">
        <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:8080:localhost" />
    </bindings>
</site>

बदले bindingInformation=":8080:localhost"के लिए bindingInformation="*:8080:*"(मेरे मामले में पोर्ट नंबर, 8080, अलग होगा।)

नोट: यदि यह काम नहीं करता है bindingInformation="*:8080:तो तारांकन के साथ हटा दिया जा सकता है।

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

यदि यह काम नहीं करता है, तो इस उत्तर पर एक नज़र डालें: https://stackoverflow.com/a/5186680/985284


30
यह समाधान मेरे काम नहीं आया। VS2013 में, बाइंडिंग इंफॉर्मेशन विशेषता को संशोधित करने के बाद, जब मैं आईडीई खोलता हूं और परियोजना को लोड करता हूं तो यह एक नई प्रविष्टि बनाता है (यानी <site name="Website1(1)" id="2" serverAutoStart="true">मैं अभी भी एक और
कंप्यूटर

5
इसने मेरे लिए VS2013 में काम किया: gilesey.wordpress.com/2013/04/21/…
Jay Cummins

10
मेरे लिए काम किया। मुख्य ट्विस्ट को व्यवस्थापक के रूप में दृश्य स्टूडियो चलाना था।
तन्मय मंडल

20
मुझे नहीं पता कि मुझे ऐसा क्यों लगता है कि इस मुद्दे के साथ केवल एक ही bindingInformation="*:8080:*"था , लेकिन मेरे लिए काम नहीं किया और परिणामस्वरूप समस्या @ Y.Eriri का अनुभव कर रहा था। अंत में काम करना समाप्त हो गया, तारांकन छोड़ रहा था bindingInformation=":8080:":। लड़के ने मुझे पागल कर दिया, मुझे आशा है कि यह किसी की मदद करेगा।
द्राज़न बेज़ेलोवुक

5
Drazen के समान, को व्यवस्थापक मोड + bindingInformation=":8080:"(बिना *) का उपयोग करना पड़ा
Matthieu Charbonnier

42

VisualStudio 2015 गैर-व्यवस्थापक

  1. आपके समाधान में, फ़ाइल .vs\config\applicationHost.configको लाइन में बदलें

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

    सेवा

    <binding protocol="http" bindingInformation=":44302:" />

    (जहां 44302 आपका पोर्ट है)


  1. व्यवस्थापक कमांड प्रॉम्प्ट से:

    मैं। पोर्ट करने के लिए गैर-व्यवस्थापक को बाइंड करने के लिए सक्षम करें

    netsh http add urlacl url=http://*:44302/ user=Everyone

    ii। फ़ायरवॉल के माध्यम से अनुमति दें

    netsh advfirewall firewall add rule name="IISExpress visualstudio app" protocol=tcp localport=44302 dir=in action=allow


  1. VisualStudio से डीबग करना प्रारंभ करें

ध्यान दें कि .vs फ़ोल्डर विंडोज़ 10 पर छिपा हुआ है। इसे देखने के लिए छिपी हुई फ़ाइलें दिखाएँ।
भाथिया-परेरा

ओह! आप मेरे हीरो हैं! आखिरकार! कुंजी .vs फ़ोल्डर का कॉन्फ़िगरेशन था। आप पर्याप्त धन्यवाद नहीं कर सकते!
जुमा

नीचे @ArunPrasadES mentiod के रूप में नोट करें, यदि आप एक त्रुटि में चलाते हैं, तो व्यवस्थापक के रूप में वी.एस.
एल्मर

@ अपनी आईडीई चलाएं और व्यवस्थापक के रूप में अपने कार्यक्रमों को डिबग करना सामान्य रूप से एक बुरा विचार है (कुछ संकीर्ण अपवादों के साथ)। सबसे महत्वपूर्ण बात, यह विकास के दौरान समस्याओं की अनुमति देता है (जब वे आसानी से तय हो जाते हैं), जो अंततः आपके कार्यक्रम को बनाता है (अनावश्यक रूप से) को व्यवस्थापक के रूप में चलाने की आवश्यकता होती है - एक केवल-व्यवस्थापक स्थान में फ़ाइलों को सहेजने जैसी चीजें, आदि। अपने IDE और / या OS / उपयोगकर्ता अनुमतियों के साथ समस्या को ठीक करें।
gregmac

@gregmac को मेरी टिप्पणी के लिए खेद है कि मेरा मतलब यह था कि मेरे IIS में समस्या थी अगर मैं बाध्यकारी विकल्पों को रद्द कर सकता हूं और वीएस को व्यवस्थापक के रूप में नहीं चला सकता, कुछ प्रक्रिया त्रुटि आईडी, जो मुझे लगता है कि मैं विंडोज 10 की अनुमति से संबंधित हूं क्योंकि मेरे पास एक नया ब्रांड है विंडोज नए वीएस 2019 इंस्टॉलेशन के साथ 10 इंस्टॉलेशन। बाकी के रूप में मैं आपसे 100% सहमत हूं
एल्मर

21

Iisexpress कॉन्फ़िगरेशन फ़ाइल को संशोधित करने के अलावा, कभी-कभी आपको नीचे दिए गए कमांड को चलाने की भी आवश्यकता होती है।

netsh http, urlacl url = http: // *: 49419 / user = हर कोई जोड़ें


49419 पोर्ट का क्या उपयोग है? क्या यह केवल एक उदाहरण बंदरगाह है, जो 8080 भी हो सकता है?
ऑलिगॉफ्रेन

मेरे अपने प्रश्न का उत्तर देते हुए: हां, यह वह पोर्ट है जिस पर ऐप चल रहा है। यदि आप इस उत्तर का उपयोग करते हैं, तो आपको एक व्यवस्थापक के रूप में विज़ुअल एसटीडीओ चलाने की आवश्यकता नहीं है।
ऑलिगॉफ़ेन

1
क्या आप कृपया एक संक्षिप्त विवरण प्रदान कर सकते हैं कि यह कैसे काम करता है?
शिशिर गुप्ता

12

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

Garret's और @ shangkeyun के उत्तर दोनों का उपयोग करके आप विजुअल स्टूडियो चलाने की आवश्यकता के बिना एक व्यवस्थापक के रूप में रनिंग वेबसाइट से जुड़ सकते हैं:

  1. खुला हुआ %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
  2. अपनी साइट का उपयोग करके खोजें name=MySiteName
  3. अनुभाग <binding>में मौजूदा आइटम को डुप्लिकेट करें <bindings>। अब आपके पास दो लाइनें होनी चाहिए binding
  4. बाइंडिंग इंफोर्मेशन में "लोकलहोस्ट" भाग निकालें।
  5. यह अब इस तरह दिखना चाहिए, मान रहा है कि बंदरगाह है 12345:

    <binding protocol="http" bindingInformation="*:12345:localhost" />
    <binding protocol="http" bindingInformation="*:12345:" />
    
  6. पोर्ट करने के लिए गैर-व्यवस्थापक को बाइंड करने के लिए सक्षम करें

    netsh http add urlacl url=http://*:12345/ user=Everyone
    

EDIT 2019: gregmac ने VS उदाहरण के लिए श्वेतसूची में एक कदम जोड़ा। मुझे इसकी कभी आवश्यकता नहीं थी, लेकिन इसे वैसे भी सूचीबद्ध करना:

  1. netsh advfirewall firewall add rule name="IISExpress visualstudio app" protocol=tcp localport=12345 dir=in action=allow

6
Netsh को जोड़ने से त्रुटि 'सेवा अनुपलब्ध' में बदल गई
tofutim

@tofutim यहाँ भी। क्या आपको एक समाधान मिला?
शीतदंश

क्या आपने बाद में विज़ुअल स्टूडियो को फिर से शुरू किया?
ऑलिगॉफ्रेन

नमस्ते, मैंने अभी देखा कि जब पूर्ववर्ती लाइनों के साथ संयुक्त netsh कमांड गलत था। मैंने 12345 का उपयोग ऊपर के पोर्ट के रूप में किया था, लेकिन 49419 को netsh कमांड में उदाहरण पोर्ट के रूप में उपयोग किया था। यह मेरे अद्यतन में तय किया गया है।
ऑलिगॉफ्रेन

10

चूँकि मैं @Garret Fogerlie की पोस्ट पर टिप्पणी करने और टिप्पणी करने वालों की समस्या के जवाब में (@ Y.Ecarri और @SamuelEdwinWard) को जोड़ने में असमर्थ हूं, इसलिए मैंने जो कुछ भी गेरेट ने सुझाया, विज़ुअल 2013 2013 का उपयोग करके, उसे व्यवस्थापक मोड में चलाकर और बदलकर application.configफ़ाइल।

डीबग लॉन्च करने और यह देखने के बाद कि मुझे वही त्रुटि संदेश मिला, मैं वापस गया application.configऔर देखा कि मेरी साइट के लिए Y.Ecarri के मुद्दे की तरह ही एक नई प्रविष्टि बनाई गई थी।

इसलिए मैंने डिबगिंग बंद कर दी, अपने समाधान को विज़ुअल स्टूडियो में खुला रखा , और application.configनई प्रविष्टि के लिए फ़ाइल को फिर से संपादित किया । मैंने भी केवल *गाएं और localhostपूरी तरह से हटा दिया , इसलिए नई प्रविष्टि के लिए मेरे पास निम्नलिखित थे:

<binding protocol="https" bindingInformation=":44300:" />


यह एकमात्र समाधान है जिसने मदद की! धन्यवाद।
कोड 5

2

आप में से कुछ अपने% USERPROFILE% निर्देशिका का उपयोग करके बहुत समय और संशोधन कर सकते हैं। यदि आप VS डिबग पर चल रहे हैं , तो $ (solutionDir) .vs \ config \ applicationhost.config का उपयोग करें


1

बाइट के लिए धन्यवाद:

Applicationhost.config में दस्तावेज़ / IISExpress / config पर जाएं

आप जिस विशेष साइट पर काम कर रहे हैं, उसके लिए प्रविष्टि खोजें:

जोड़ें:

<binding protocol="http" bindingInformation="*:<your site port>:*" />

मौजूदा के सामने

 <binding protocol="http" bindingInformation="*:<your site port>:localhost" />

जब आप पुनः आरंभ करते हैं तो VS2013 के बिना समाधान प्राप्त करने के लिए एक नई वेबसाइट xml प्रविष्टि बनाएं। आपको व्यवस्थापक के रूप में चलाने की आवश्यकता होगी।



0

इसी से मेरा काम बना है:

  • IIS प्रबंधक प्रारंभ करें
  • प्रोजेक्ट फ़ोल्डर ( C:\VSProjectsमेरे मामले में) को इंगित करने वाली एक नई वर्चुअल निर्देशिका जोड़ें
  • IIS प्रबंधक के भीतर नई वर्चुअल निर्देशिका का चयन करें। Directory Browsingविकल्पों की सूची से चयन करें। दाईं ओर एक Enableबटन है। इसे क्लिक करें।

अब मैं नेटवर्क पर अपने फ़ोल्डर और प्रोजेक्ट बिन को एक्सेस कर सकता हूं mypcname\VSProjects\myProj\outputBinViewer


0

विजुअल स्टूडियो कोड में एक बहुत ही समान डिबगिंग था , मैंने इसे जोड़कर हल किया:

"env": {
      // ...
      "ASPNETCORE_URLS": "http://*:5000" // change to the port you are using
      // ...
},

.. सेवा लॉन्च json

जाहिर है, डिफ़ॉल्ट रूप से यह http प्रोटोकॉल को 'लोकलहोस्ट: 5000' से बांधता है, इसलिए यह लोकलहोस्ट के साथ काम करता है लेकिन मेल पते के साथ नहीं - न तो दूरस्थ रूप से और न ही स्थानीय रूप से।

यदि आप किसी भिन्न कंप्यूटर से आने वाले अनुरोध द्वारा ब्रेकपॉइंट को हिट करने का प्रयास कर रहे हैं, तो अपनी फ़ायरवॉल सेटिंग्स (और / एंटीवायरस) की जांच करना न भूलें

उम्मीद है की यह मदद करेगा

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