IIS Express에서 원격 요청을 어떻게 활성화 할 수 있습니까? 스캇 거 트리 (Scott Guthrie)는 이것이 가능하다고 했지만 어떻게 말하지 않았다.
IIS Express에서 원격 요청을 어떻게 활성화 할 수 있습니까? 스캇 거 트리 (Scott Guthrie)는 이것이 가능하다고 했지만 어떻게 말하지 않았다.
답변:
IIS 팀 사이트 에 IIS Express에서 원격 연결 을 활성화 하는 방법을 설명하는 블로그 게시물이 있습니다 . 다음은 해당 게시물의 관련 부분을 요약 한 것입니다.
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 그룹은 어디에 있습니까 ? "Tout le monde"와 같이 공백이있는 그룹에는 큰 따옴표를 사용하십시오.
Windows 방화벽을 통한 IIS Express를 허용하십시오.
고급 보안 / 인바운드 규칙 / 새 규칙을 사용하여 시작 / Windows 방화벽 ...
프로그램
%ProgramFiles%\IIS Express\iisexpress.exe
또는 포트 8080 TCP
이제 시작 iisexpress.exe
하면 다음과 같은 메시지가 나타납니다
"hello world"애플리케이션 "/"에 대한 URL "http : // * : 8080 /"을 성공적으로 등록했습니다
users=everyone
대한 매개 변수 로 netsh
1789 오류가 발생할 수 있습니다. 해결 방법은 everyone
사용자 언어로 해당 그룹 이름 으로 변환 하는 것입니다.
Project Url
경우 호스트 이름에 별표를 입력하면 오류가 발생합니다. 다른 것을 입력하면 새로운 가상 디렉토리를 만들려고 시도합니다. application.config의 항목에 연결되지 않습니다.
bindingInformation="*:8080:hostname"
와 2 단계 에서 컴퓨터의 호스트 이름을 사용해야 url=http://hostname:8080/
하고 웹 탭의 Visual Studio 웹 프로젝트 속성에서 Project Url을로 설정해야 http://hostname:8080/
합니다. *
이미 생성 한 경우 urlacl을 삭제하십시오 . 둘 다 있으면 작동하지 않습니다. 마지막으로 웹 브라우저에서 이동하는 URL은 localhost가 아닌 호스트 이름을 참조해야합니다.
<binding protocol="http" bindingInformation="*:8080:localhost" />
몇 달 전에이 워크 플로를 시도하는 동안 동일한 문제가 발생하는 것을 기억합니다.
어떤 내가 이런 종류의 시나리오를 위해 특별히 간단한 프록시 유틸리티를 쓴 이유 : https://github.com/icflorescu/iisexpress-proxy .
IIS Express 프록시를 사용하면 "netsh http add urlacl url = vaidesg : 8080 / user = everyone"또는 "applicationhost.config"를 엉망으로 만들 필요가 없습니다.
명령 프롬프트에서 이것을 발행하십시오.
iisexpress-proxy 8080 to 3000
… 그리고 원격 장치가 http : // vaidesg : 3000 을 가리킬 수 있습니다 .
대부분의 경우 단순할수록 좋습니다.
iisexpress-proxy를 찾을 때까지 아무것도 작동하지 않았습니다 .
관리자 권한으로 명령 프롬프트를 연 다음 실행
npm install -g iisexpress-proxy
그때
iisexpress-proxy 51123 to 81
Visual Studio 프로젝트가 localhost : 51123에서 열리고 외부 IP 주소 xxxx : 81에서 액세스한다고 가정합니다.
편집 : 나는 현재 사용하고 있습니다 ngrok
좋은 자원은 개발 시간이 IISExpress에 쉽게에서 SSL과 함께 작업 스콧 Hanselman은에 의해.
다음은 포트 80을 통해 외부에서 IIS Express를 제공하기 위한 섹션입니다.
Visual Studio를 사용하는 경우 다음 단계에 따라 IP-Adress를 통한 IIS-Express에 액세스하십시오.
ipconfig
Windows 명령 줄에서 호스트 IP 주소 얻기이동
$(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"/>
IP 주소로
Visual Studio Professional 2015에서 "Conveyor by Keyoti"를 설치하여 문제를 해결했습니다. 컨베이어는 외부 요청을 가능하게하는 포트 (45455)로 REMOTE 주소 (IP)를 생성합니다. 예:
컨베이어 (없이 안드로이드 에뮬레이터 네트워크에 또는에서 외부 태블릿 및 휴대 전화에서에서 당신 테스트 웹 응용 프로그램을 할 수 있습니다 http://10.0.2.2:<hostport>
)
단계는 다음 링크에 있습니다.
https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti
Panic 대령의 답변 을 시도했지만 Visual Studio에서 작동하지 않는 경우 다음을 시도하십시오.
<binding />
IIS Express 구성에서 다른 항목 추가
<bindings>
<binding protocol="http" bindingInformation="*:8080:localhost" />
<binding protocol="http" bindingInformation="*:8080:hostname" />
</bindings>
마지막으로 Visual Studio를 관리자 권한으로 실행 해야합니다
도움이 된 것은 'IISExpress'아이콘, '모든 응용 프로그램 표시'를 마우스 오른쪽 버튼으로 클릭하는 것이 었습니다. 그런 다음 웹 사이트를 선택하고 사용하는 aplicationhost.config를 보았으며 수정이 완벽했습니다.
이것은 Visual Studio 2015가 설치된 Windows 10에서 http 및 https를 사용하여 원격 액세스를 활성화하기 위해 수행 한 작업입니다.
첫 번째 단계는 응용 프로그램을 내부 IP 주소에 바인딩하는 것입니다. 실행 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
admin 으로 새 프롬프트를 열고 다음 명령을 실행하십시오.
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 Express가 웹 매트릭스와 작동하도록하는 안내서입니다. 이 안내서 가 VS 2010에서 작동하도록 할 때 더 유용하다는 것을 알았습니다 .
방금 3 단계와 4 단계 (IIS Express를 관리자로 실행)를 따라 방화벽을 일시적으로 해제하여 방화벽을 작동시켜야했습니다.
IIS Express 구성을 수정하거나 새 HTTP.sys 규칙을 추가하거나 Visual Studio를 관리자로 실행하는 대신 포트 전달을 설정할 수 있습니다.
기본적으로 IP:PORT
웹 사이트 실행은 로컬 호스트가 아닌 외부 네트워크 어댑터의 컴퓨터의 다른 사용 가능한 포트로 전달해야합니다.
문제는 IIS Express (적어도 Windows 10에서는) [::1]:port
가 IPv6 포트에서 수신 대기한다는 의미에 바인딩됩니다 . 이 점을 고려해야합니다.
이 작업을 수행 한 방법은 다음과 같습니다 -http : //programmingflow.com/2017/02/25/iis-express-on-external-ip.html
도움이 되길 바랍니다.
내가 찾은 가장 간단하고 멋진 방법은 사용하는 것입니다 (설정하는 데 2 분이 걸립니다).
localhost에서 실행되는 모든 작업에서 작동합니다. 가입 만하면 실행이 거의되지 않으며 localhost에서 실행하는 모든 URL은 어디서나 액세스 할 수있는 공개 URL을 얻습니다.
이것은 IIS 설정이나 방화벽을 다루지 않고 원격 팀 동료에게 물건을 보여주는 데 좋습니다. 액세스를 중지하고 실행 파일을 종료하십시오.
ngrok authtoken xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ngrok http -host-header=localhost 89230
89230이 IIS Express 포트라고 가정
무료 요금제로도 여러 포트를 실행할 수 있습니다
Win 8.1 및 외부 요청에서 IIS Express를 사용하는 데 문제가 있습니다.
다음 단계에 따라 외부 요청을 디버깅하십시오.
작동합니다!
관리자에서 Visual Studio를 실행하면 바로 추가 할 수 있습니다
<binding protocol="http" bindingInformation="*:8080:*" />
또는
<binding protocol="https" bindingInformation="*:8443:*" />
으로
%userprofile%\My Documents\IISExpress\config\applicationhost.config
$(SolutionDir).vs\config\applicationHost.config
적용하고 Windows 방화벽에서 응용 프로그램의 포트 (8443)를 열어야했습니다.
로컬 IIS를 사용하도록 설정 했으므로 방금 디버깅 포트에 다시 쓰기 규칙을 만들었습니다. 개발이 완료되면 제거하기가 더 쉽기 때문에 다른 방법보다 낫고 멋지다고 생각합니다 ... 여기에 다시 쓰기가 표시됩니다. .
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="^dev/(.*)" />
<action type="Rewrite" url="http://localhost:47039/{R:1}" />
</rule>
</rules>
</rewrite>
VS를 사용하면 로컬 IIS를 직접 사용하여 개발할 수 있습니다 (원격 연결 허용).하지만 항상 관리자로 실행해야합니다 ... 싫습니다.
이것은 엄청나게 훌륭하고 도메인 이름이 예쁜 HTTPS를 포함합니다.
http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx
위의 링크가 사라지는 경우를 대비하여 다른 곳에서는 찾을 수 없었던 정말 멋진 부분 :
> 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/
위의 유틸리티는 SSL 인증서를 등록합니다! -UseSelfSigned 옵션을 사용하면 매우 쉽습니다.
어려운 일을하고 싶다면 분명하지 않은 부분은 HTTP.SYS에게 다음과 같이 사용할 인증서를 알려주는 것입니다.
netsh http add sslcert ipport=0.0.0.0:443 appid={214124cd-d05b-4309-9af9-9caa44b2b74a} certhash=YOURCERTHASHHERE
Certhash는 MMC의 인증서 속성에서 얻을 수있는 "지문"입니다.
나는 다음을 수행하고 연결할 수있었습니다.
1) IIS Express 구성 바인딩을 로컬 호스트에서 '*'로 변경했습니다.
바인딩 프로토콜 = "http"bindingInformation = "* : 8888 : *"
2) 프로토콜 유형에 대한 특정 포트를 허용하도록 방화벽에서 정의 된 인바운드 규칙 : tcp
3) 다음 명령을 추가하여 포트의 네트워크 구성을 추가하십시오. netsh http add urlacl url = http : // * : 8888 / user = everyone
[프로젝트 속성 대화 상자]
VisualStudio 2017 및 NetCore API 프로젝트를 사용하여 개발하는 경우 :
1) Cmd-Box에서 : ipconfig / all을 사용하여 IP 주소를 결정
2a) 프로젝트 속성-> 디버그 탭에서 검색된 IP 주소를 입력하십시오.
2b) 포트를 선택하고 2a 단계에서 IP 주소에 연결하십시오.
3) 방화벽에 허용 규칙을 추가하여 선택한 포트에서 들어오는 TCP 트래픽을 허용합니다 (내 방화벽은 "방화벽에 규칙 차단 또는 추가"대화 상자로 트리거 됨). 이 경우 트릭을 추가하십시오.
위의 솔루션의 단점 :
1) 동적 IP 주소를 사용하는 경우 다른 IP 주소가 할당 된 경우 위 단계를 다시 수행해야합니다.
2) 서버에 이제는 잊을 수있는 열린 포트가 있지만이 열린 포트는 원치 않는 손님을위한 초대입니다.