LAN을 통해 Visual Studio 디버깅 IIS Express 서버에 연결


84

VS2012에서 개발 된 테스트 ASP.NET MVC3 응용 프로그램이 있습니다. 디버깅을 시작할 때 .NET에 대한 요청을 통해 호스트 컴퓨터에서 앱에 액세스합니다 http://localhost:<portnumber>. 하지만 난을 통해 인트라넷에 원격 컴퓨터에서 동일한 응용 프로그램에 액세스하려고하면 http://<ip>:<portnumber>내가 얻을 HTTP error 400: Bad request. Invalid Host Name.이 모든 서버 구성에 액세스 할 수없는 IIS 익스프레스에서 실행 마찬가지로 지금까지.

이 문제를 해결할 수있는 방법이 있습니까?


무료 확장 인 Conveyor를 사용하여이 marketplace.visualstudio.com/… 을 수행 할 수 있습니다. 구성 변경없이 손쉽게 작동합니다.
짐 W는 분석 재개 모니카 말한다

답변:


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:별표를 제거 할 수 있습니다.

그런 다음 방화벽이 해당 포트에서 들어오는 연결을 허용하는지 확인하십시오. IISExpress에서 구성 파일을 다시로드하려면 시스템 또는 최소한 Visual Studio를 다시 시작해야 할 수 있습니다.

이것이 작동하지 않으면 https://stackoverflow.com/a/5186680/985284 답변을 살펴보십시오.


30
이 솔루션은 저에게 효과적이지 않았습니다. 내가 IDE를 열고 프로젝트를로드 할 때 VS2013에서 bindingInformation 속성을 수정 한 후, 그것은 새 항목 (예를 생성 <site name="Website1(1)" id="2" serverAutoStart="true">하고 나는 또 다른 compuer에서 웹 사이트에 액세스 할 수 없습니다입니다.
이반 Ecarri에게

5
이 VS2013에서 나를 위해 일한 : gilesey.wordpress.com/2013/04/21/...
제이 커민스을

10
나를 위해 일했습니다. 주요 조정은 Visual Studio를 관리자로 실행하는 것이 었습니다.
Tanmay Mandal 2014 년

20
왜 내가이 문제를 가진 유일한 사람인 것처럼 보 였는지 모르겠지만 bindingInformation="*:8080:*"나를 위해 일하지 않았고 @ Y.Ecarri가 겪고있는 문제가 발생했습니다. 마침내 작동하게 된 것은 별표를 삭제하는 것 bindingInformation=":8080:"입니다. 소년이 나를 미치게 만들었습니다. 누군가에게 도움이되기를 바랍니다.
Drazen Bjelovuk 2014

5
드라 젠과 동일, 관리자 모드 + 사용했다 bindingInformation=":8080:"(* 제외)
마티유 샤르 보니

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에서 디버깅 시작

Windows 10에서는 .vs 폴더가 숨겨져 있습니다. 숨겨진 파일을 표시하여 볼 수 있습니다.
bhathiya - 페레라

오! 너는 나의 영웅이야! 드디어! 열쇠는 .vs 폴더의 구성이었습니다. 충분히 감사 할 수 없습니다!
twsmale jul.

아래 @ArunPrasadES mentiod로 참고하고 오류가 발생하면 VS를 관리자로 실행하십시오.
Elmer

@Elmer IDE를 실행하고 관리자로 프로그램을 디버깅하는 것은 일반적으로 좋지 않은 생각입니다 (몇 가지 좁은 예외가 있음). 가장 중요한 것은 개발 중 (쉽게 수정 될 때) 권한 문제를 마스킹하여 결국 프로그램을 관리자 권한으로 실행해야합니다 (예 : 관리자 전용 위치에 파일 저장 등). IDE 및 / 또는 OS / 사용자 권한 문제를 해결합니다.
gregmac

@gregmac 내가 의미하는 나쁜 의견에 대해 죄송합니다. 바인딩 옵션을 canged하고 VS를 Admin으로 실행하지 않으면 IIS에 문제가 있다는 것입니다. 일부 프로세스 오류 ID는 새로운 Windows가 있으므로 Windows 10의 권한과 관련이 있다고 가정합니다. 새로운 VS 2019 설치로 10 설치. 나머지는 100 % 동의합니다
Elmer

21

iisexpress 구성 파일을 수정하는 경우를 제외하고 때로는 아래와 같은 명령을 실행해야합니다.

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


49419 포트는 어떤 용도로 사용됩니까? 8080이 될 수도있는 예제 포트입니까?
oligofren

내 질문에 대답 : 예, 앱이 실행되는 포트입니다. 이 답변을 사용하면 더 이상 Visual STudio를 관리자로 실행할 필요가 없습니다.
oligofren

1
어떻게 작동하는지 간략하게 설명해 주시겠습니까?
Shishir Gupta 2018 년

12

Visual Studio를 관리자로 실행하지 않는 방법

Garret@shangkeyun의 대답 을 모두 사용하면 Visual Studio를 관리자로 실행할 필요없이 실행중인 웹 사이트에 연결할 수 있습니다.

  1. 열다 %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
  2. 다음을 사용하여 사이트 검색 name=MySiteName
  3. 섹션 의 기존 <binding>항목을 복제 <bindings>하십시오. 이제 binding.
  4. bindingInformation에서 "localhost"부분을 제거하십시오.
  5. 이제 포트가 다음과 같다고 가정하면 다음과 같이 표시됩니다 12345.

    <binding protocol="http" bindingInformation="*:12345:localhost" />
    <binding protocol="http" bindingInformation="*:12345:" />
    
  6. 관리자가 아닌 사용자가 포트에 바인딩하도록 설정

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

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 여기에 동일합니다. 해결책을 찾았습니까?
frostymarvelous

나중에 Visual Studio를 다시 시작 했습니까?
oligofren

안녕하세요, netsh 명령이 이전 줄과 결합되었을 때 잘못되었음을 알았습니다. 위의 포트로 12345를 사용했지만 netsh 명령의 예제 포트로 49419를 사용했습니다. 이것은 내 업데이트에서 수정되었습니다.
oligofren

10

@Garret Fogerlie의 게시물에 댓글을 추가 할 수없고 댓글 작성자의 문제 (@ Y.Ecarri 및 @SamuelEdwinWard)에 대한 응답으로 Garret이 제안한대로 Visual Studio 2013을 사용하여 관리자 모드에서 실행하고 application.config파일.

디버그를 시작하고 동일한 오류 메시지가 표시되는 것을 확인한 후 다시 들어가서 application.configY.Ecarri의 문제처럼 내 사이트에 대한 새 항목이 생성되었음을 확인했습니다.

그래서 디버깅을 중지 하고 Visual Studio에서 내 솔루션을 열어application.config 두고 새 항목에 대해 파일을 다시 편집했습니다 . 나는 또한 단순히 *노래를 localhost완전히 제거 했기 때문에 새 항목에 대해 다음과 같이했습니다.

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


이것이 도움이 된 유일한 솔루션입니다! 감사.
code5 nov.

2

일부는 % USERPROFILE % 디렉토리를 사용하여 수정하고 테스트하는 데 많은 시간을 할애 할 수 있습니다. VS debug 에서 실행중인 경우 $ (solutionDir) .vs \ config \ applicationhost.config를 사용하십시오.


1

byteit 덕분에 :

Documents / IISExpress / config에서 applicationhost.config로 이동합니다.

작업중인 특정 사이트에 대한 항목을 찾으십시오.

더하다:

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

기존의

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

VS2013을 사용하지 않고 솔루션을 얻으려면 다시 시작할 때 새 웹 사이트 xml 항목을 만듭니다. 관리자로 실행해야합니다.


1

위의 구성 후에는 관리 모드에서 Visual Studio를 실행해야했습니다.

여기에 이미지 설명 입력


0

이것은 나를 위해 일한 것입니다.

  • IIS 관리자 시작
  • 프로젝트 폴더 ( C:\VSProjects제 경우에는) 를 가리키는 새 가상 디렉터리를 추가합니다.
  • IIS 관리자에서 새 가상 디렉터리를 선택합니다. Directory Browsing옵션 목록에서 선택하십시오 . 오른쪽에 Enable버튼이 있습니다. 클릭하세요.

이제 .NET을 통해 네트워크의 폴더 및 프로젝트 저장소에 액세스 할 수 있습니다 mypcname\VSProjects\myProj\outputBinViewer.


0

Visual Studio Code 에서 매우 유사한 문제 디버깅이 발생 하면 다음을 추가하여 해결했습니다.

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

.. to launch.json

분명히 기본적으로 http 프로토콜을 'localhost : 5000'에 바인딩하므로 localhost 에서는 작동 하지만 ip 주소로 는 작동 하지 않습니다 .

다른 컴퓨터에서 들어오는 요청으로 중단 점에 도달하려고하는 경우 방화벽 설정 (및 / 또는 바이러스 백신)을 확인하는 것을 잊지 마십시오.

도움이 되었기를 바랍니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.