VS2010 프로젝트에 대한 외부 액세스를 위해 IIS Express 구성


103

VS2010에서 프로젝트를 개발 중이며 IIS Express를 통해 로컬에서 내 사이트를 볼 수 있습니다. 네트워크를 통한 외부 액세스를 활성화하고 싶습니다.

내 모든 연구 결과가 다음 블로그 항목으로 보냈습니다. http://blogs.iis.net/vaidyg/archive/2010/07/29/serving-external-traffic-with-webmatrix-beta.aspx . Visual Studio에서 시작된 프로젝트에 대한 바인딩을 구성하는 방법을 보여주지 않는 것 같습니다 (스크린 샷에서 화면을 찾을 수없고 applicationhost.config에서 바인딩 정보를 편집했지만 사이트를 실행할 때 반영되지 않는 것 같습니다. 비주얼 스튜디오).


10
Scott Hanselman 블로그 게시물 hanselman.com/blog/…을
balexandre

답변:


136

1 applicationhost.config 파일 (문서의 IISExpress 폴더에 있음)을 편집 한 후 사이트 바인딩은 다음과 같아야합니다.

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

바인딩은 세 부분으로 구성됩니다. 먼저 IP 주소 또는 목록 또는이 경우 와일드 카드입니다. 두 번째는 포트 번호이고 세 번째는 호스트 이름, 목록 또는 와일드 카드 ( Host헤더 별 필터링 용 )입니다. 개발 목적으로는 고유 한 포트를 사용할 가능성이 높으므로 여기서 와일드 카드가 가장 적합합니다.

2 비 localhost 바인딩을 사용하고 있으므로 추가 권한이 필요합니다. VS를 관리자로 실행할 수도 있고, 가급적 이면 필요한 권한을 부여하기 위해 URL ACL추가 해야 합니다 . 아래 예에서는 모든 사람에게 권한이 부여되지만 자신의 사용자 이름을 사용할 수 있습니다.

참고 :urlacl바인딩과 정확히 일치해야합니다. 따라서 urlaclfor 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 Express를 실행하고 바인딩 등록 실패 메시지가 있는지 확인합니다. 명령 줄에서 시작하려면 다음 명령을 입력하십시오.

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

3 마지막으로 적절한 방화벽 항목이 필요합니다. 이를 위해 "고급 보안이 포함 된 Windows 방화벽"콘솔을 사용하는 것이 가장 쉽습니다.

"인바운드 규칙"에서 "새 규칙 ..."을 선택합니다.

  • 규칙 유형은 "사용자 지정"입니다.
  • 프로그램은 서비스-> 사용자 지정 ...-> 서비스에만 적용됩니다. (IIS Express는 서비스가 아니지만 사용하는 HTTP 멀티플렉서입니다.)
  • 프로토콜은 TCP입니다.
  • 특정 포트 : 모든 IIS Express 바인딩에 대한 모든 포트를 나열합니다. 이 규칙으로 돌아와서 언제든지 포트를 추가 할 수 있습니다. (이 작업이 번거로워지면 40000-65534Visual Studio에서 사용하는 전체 범위를 포함 하는 범위를 추가 할 수 있지만 보안 수준이 떨어집니다.)
  • 작업은 "연결 허용"입니다.
  • 프로필은 다음 중 하나입니다. 확실하지 않은 경우 "도메인 + 개인"을 선택하십시오.
    • "도메인", 회사 데스크톱이고 로컬 도메인에서만 실행되는 경우
    • "도메인 + 개인"회사가 아닌 환경의 개인 개발 컴퓨터이거나 집에서 작업 할 때도 작업해야하는 회사 노트북 인 경우.
    • 비 개인 네트워크에서 데모를 수행해야하는 경우 "도메인, 개인 및 공용".
  • 이름은 "IIS Express Dev Server"와 같은 형식이어야합니다.

12
@ user578913 그래서 마침내 실행중인 IIS Express 작업 표시 줄을 열고이를 클릭 한 다음 구성 파일에 대한 링크를 클릭하여 올바른 applicationhost.config 파일을 찾았습니다. 두 번째 라인에서 포트를 1063으로 설정했습니다. 첫 번째 라인이 설정되어있는 것입니다. 명령 줄을 실행했는데 모든 것이 잘 보였습니다. 네트워크의 다른 컴퓨터에서 machine-name 또는 machine-name : 1063으로 이동할 때 여전히 아무것도 얻지 못합니다.
snumpy 2011 년

15
좋습니다. Visual Studio가 포트 (8080 이외)를 할당했기 때문에 Windows 방화벽이 포트를 차단했습니다. Windows 방화벽을 종료하고 (아마도 포트를 열 수는 있지만 보안 네트워크에 있음) 컴퓨터 이름 대신 컴퓨터의 IP를 사용하면 작동했습니다. 감사. 나는 (= 최대 투표 싶지만, 아직 담당자가없는
snumpy

3
예, Windows 방화벽이 켜져 있어야하는 경우 TCP 포트 8080 (또는 사용중인 항목)을 명시 적으로 추가합니다. Windows 7에서는 처음에 "IIS Express Worker Process"에 포트를 할당하려고했습니다. 그러나 그것은 작동하지 않았습니다. "새 규칙"옵션을 사용하고 포트 8080을 허용해야했습니다. 프로필 (도메인, 개인, 공용) 선택도 중요합니다.
Gautam Jain

2
참고 사항 : 액세스가 거부되면 Visual Studio를 관리자로 실행 합니다.
nVentimiglia 2013 년

3
VS2015부터 파일 위치는 C:\<Path\To\Solution>\.vs\config\applicationhost.config. (감사합니다, @Talon)
snumpy

29

이 문제에 대해서도 몇 시간을 보냈으며 Android Xoom에서 win7 dev 컴퓨터로 탐색하려고했기 때문에 내가 만든 새 asp.net 웹 앱을 테스트 할 수있었습니다. 내가 한 것은 IISExpress의 applicationhost.config를 PC HostName을 사용하는 것에서 새 사이트의 PC의 현재 IP 주소로 변경하는 것뿐입니다.

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

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

이 작업을 수행하고 IISExpress를 다시 시작하면 ... dev-Lee 컴퓨터를 찾아보고 Xoom에서 내 앱을 볼 수있었습니다!


10
이 모든 솔루션에서 얻는 것은 오류 400-잘못된 요청입니다. 어떤 제안?
Krumelur

2
@Krumelur, 올바른 applicationhost.config 파일을 편집했는지 확인하십시오. 내 문서 폴더에 있습니다.
Codler 2014-06-11

14

IIS Express의 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>

이제 IP 주소를 사용하여 LAN에서 웹 사이트에 액세스 할 수 있습니다.

IIS Express를 사용하여 Lan에서 로컬 사이트에 액세스


6

Visual Studio 2013 SP1 이상 (2015)에는 "모든 사용자에게 서버 설정 적용 (프로젝트 파일에 저장)"설정이 포함되어 있습니다. 이것은 기본적으로 활성화되어 있습니다. 활성화되면 Visual Studio는 다른 구성 파일을 사용하도록하는 명령 줄 인수와 함께 IIS Express를 시작합니다. 'applicationhost.config'파일의 위치는 '.vs \ config'의 프로젝트 디렉토리 아래에 있습니다.


1
네, 그것은 제 경우에 문제였습니다. 잘못된 파일을 편집하려고했습니다. 이 경우 트레이 아이콘을 클릭하고 모든 앱을 나열한 다음 선택하여 IIS Express 앱의 구성 위치를 확인할 수 있습니다. 구성 파일의 경로는 아래에 기록됩니다. 내 .vs \ config
evilkos

1
네, 저도 마찬가지입니다. 대단히 감사합니다.
Vas


1

Visual Studio로 작업하는 경우 다음 단계에 따라 IP 주소를 통해 IIS-Express에 액세스합니다.

  1. 호스트 IP 주소 가져 오기 : ipconfigWindows 명령 줄에서
  2. $ (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"/>
    귀하의 IP 주소로
  5. 관리자 권한으로 Visual Studio를 실행하면 모든 것이 작동합니다.
  6. 원격에서 연결을 시도하면 방화벽 문제를 찾을 수 있습니다.

단서는 Visual Studio에 자체 applicationHost.config 파일이 있다는 것입니다!


0

Visual Studio 2012에서이 작업을 수행하는 데 많은 문제가 있었으며 404 오류에서 503 오류로 변경되었습니다. 결국 나를 위해 일한 것은 IIS Express 구성에서 모든 관련 구성을 지우는 것이 었습니다.

"\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 /으로 변경 한 다음 가상 디렉터리 만들기 버튼을 누릅니다. 이전에는 호스트 이름이 'localhost'여야한다는 오류가 발생했지만 이번에는 그렇지 않았습니다. 그 후 작동했습니다.

간단히 말해서 기존 구성을 먼저 지우고 다시 시작하십시오.


-2

외부 도메인이 "name.mydyndns.com"이면 다음을 작성해야합니다.

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

이것은 Windows 2003 Server 및 IIS 7.5 Express에서 작동합니다.


-3

스크린 샷

IIS의 응용 프로그램 풀에서 "32 비트 응용 프로그램 사용"을 "true"로 설정합니다.


이것이 실제로 질문을 해결하는지 확실하지 않습니다. 이 글을 다른 질문에 올리려고 하셨나요?
ckittel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.