[iis-express] IISExpress는 원격 컴퓨터에서 503 오류를 반환합니다

로컬 네트워크의 다른 컴퓨터 / 장치를 사용하여 로컬 IISExpress 인스턴스에서 실행중인 웹 사이트를 테스트하려고합니다. Win7 Pro를 실행 중입니다.

로컬 네트워크 세그먼트의 다른 컴퓨터에서 내 컴퓨터를 탐색하려고하면 400 오류가 발생합니다. 호스트 이름이 잘못되었습니다.

다음과 같이 관리자 권한 명령 프롬프트에서 명령을 사용하여 ACL에 대한 원격 액세스 권한을 부여해야한다는 것을 이해합니다.

netsh http add urlacl url=http://mymachinename:50333/ user=everyone

이제 503 서비스를 사용할 수 없습니다 오류가 발생합니다.

Windows 방화벽이 현재 종료되었으며 주소로 로컬 IISExpress 인스턴스를 찾아 볼 수 있습니다. http://localhost:50333

이 구성 퍼즐의 마지막 부분은 무엇입니까?



답변

applicationhost.config 파일에 바인딩 정보 항목이없는 것 같습니다.

  1. applicationhost.config 파일을여십시오. 가능한 위치는 다음과 같습니다.

    • %userprofile%\Documents\IISExpress\config\applicationhost.config
    • $(solutionDir)\.vs\config\applicationhost.config (VS2015)
    • 실패하면 출력을 검사하여 iisexpress.exe확인하십시오.
  2. WebSite 항목을 찾아 시스템 이름으로 다음 바인딩을 추가 하십시오.

         <binding protocol="http" bindingInformation=":50333:your-machine-name" />
    
  3. IIS Express를 다시 시작하십시오.


답변

나를 위해 일한 것은 단 하나였습니다.

사용 *:portnumber:*은 좋지 않았다. 예, 그렇게하고 Windows 방화벽이 열려 있는지 확인한 후 포트에 연결할 수 있지만 여전히 “503”오류가 발생합니다.

로컬에서 몇 가지를 테스트 한 결과 http : // localhost 만 작동 한다는 것을 알았습니다 . 실제 IP 주소 (127.0.0.1이 아닌 192.168.1.50)를 사용하면 로컬 컴퓨터에서도 여전히 503이 반환됩니다. 바인딩에 실제 호스트 이름을 사용해 보았지만 IIS Express는 시작을 거부했습니다. 실제로 호스트 이름을 확인하는 방법과 관련이있을 수 있습니다. 나는 더 이상 탐구하지 않았다.

마지막 으로이 구성을 사용했습니다.

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

그런 식으로을 사용하여 원격 컴퓨터에서 연결할 수있었습니다 http://192.168.1.50:53351.


답변

이러한 전체 주제에 대해 3 시간 이상을 낭비한 후 설정을 공유하기로 결정했습니다. 내 구성은 Windows 8의 웹 업데이트 4에 대한 Visual Express 2012입니다. 이것은 연구 (최소 8 년) 이후 MS VS로 처음 돌아 왔으며 이제는 Linux 규칙이 확실합니다. django에서 이런 종류의 설정은 문서 검색에 10 분이 걸렸습니다.

  1. 테스트를 위해 방화벽을 끄십시오

    netsh advfirewall set allprofiles state off
    
  2. 내 경우 로컬 주소는 localIP = 192.168.1.102입니다 (링크에는 숫자가 아닌 도메인을 포함 할 수 없으므로 mylocaldomain.com 대신 아래를 사용하십시오. 스택 오버 플로우 정책 참조). Documents\IISExpress\config\applicationhost.config

    <bindings>
        <binding protocol="http" bindingInformation="*:53351:mylocaldomain.com" />
        <binding protocol="http" bindingInformation="*:53351:localhost" />
    </bindings>
    
  3. ISS Express 시작 서비스에 대한 자동 실행 추가

    <site name="NeuronCharts" id="2" serverAutoStart="true">
    
  4. http 서버에 이상한 규칙을 추가하십시오 (필요한지 여전히 모르겠습니다)

    netsh http add urlacl url=http://mylocaldomain.com:53351/ user=everyone
    
  5. VS IDE가 아닌 IISExpress를 수동으로 실행

  6. ISSExpress가 바인딩을 등록하고 있음을 알 수 있습니다
  7. 작동하면 브라우저를 실행 http://mylocaldomain.com:53351
    하고 방화벽 규칙을 추가 할 수 있습니다
  8. 방화벽 규칙 추가

    netsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=53351 remoteip=any action=allow
    

로컬 네트워크 사용 localsubnet에 액세스하려면 외부에서 서버에 액세스하려면 remoteip을 any로 설정하십시오.

  1. 방화벽 시작

    netsh advfirewall set allprofiles state on
    
  2. 모든 것이 로컬 및 공용 IP에서 작동하는지 다시 확인하십시오.

행운을 빌어 요

라팔


답변

문제는 잘못된 urlacl 매핑과 관련이 있음을 발견했습니다. 이것을 알아 내려면 :

netsh http show urlacl

http://+:80/바인딩 할 포트 와 같은 것을 찾으십시오 .

그런 다음 사용

netsh http delete url=<the url from the list>

이것은 나를 위해 문제를 해결했습니다.


답변

아무것도 나를 위해 일하지 않았다. 마침내 나는 iisexpress-proxy를 찾았다.

내 대답을 참조하십시오 https://stackoverflow.com/a/33623399/631527

또 다른 해결책은 ngrok


답변

도움이 된 것은 ‘IISExpress’아이콘, ‘모든 응용 프로그램 표시’를 마우스 오른쪽 버튼으로 클릭하는 것이 었습니다. 그런 다음 웹 사이트를 선택하고 사용하는 aplicationhost.config를 보았으며 수정이 완벽했습니다.

IISExpress 구성


답변

문제는 솔루션 대신 웹 폴더에서 applicationhost.config 파일을 업데이트하는 것입니다. 솔루션 구성 파일은 변경할 파일입니다.