IIS Express에서 외부 요청을 활성화하는 방법은 무엇입니까?
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)
변경해야 할 세 가지가 있습니다.
- 모든 IP 주소 및 호스트 이름에 바인딩하도록 IIS Express 자체에 지시하십시오. 당신에
.config
파일. 일반적으로- VS 2015 :
$(solutionDir)\.vs\config\applicationhost.config
- <VS 2015 :
%userprofile%\My Documents\IISExpress\config\applicationhost.config
- VS 2015 :
사이트의 바인딩 요소를 찾아서 추가하십시오.
<binding protocol="http" bindingInformation="*:8080:*" />
- 'http.sys'라는 Windows 비트를 설정하십시오. 관리자로서 다음 명령을 실행하십시오.
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 /"을 성공적으로 등록했습니다
몇 달 전에이 워크 플로를 시도하는 동안 동일한 문제가 발생하는 것을 기억합니다.
어떤 내가 이런 종류의 시나리오를 위해 특별히 간단한 프록시 유틸리티를 쓴 이유 : 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를 제공하기 위한 섹션입니다.
이에 대한 주석으로 :
netsh http add urlacl url=http://vaidesg:8080/ user=everyone
영어 버전의 Windows에서만 작동합니다. 지역화 된 버전을 사용하는 경우 "모두"를 다른 것으로 바꿔야합니다. 예를 들면 다음과 같습니다.
- 네덜란드어 버전을 사용할 때 "Iedereen"
- 독일어 버전을 사용할 때 "Jeder"
- 헝가리어 버전 사용시 "민 덴키"
그렇지 않으면 오류가 발생합니다 (SDDL 작성 실패, 오류 : 1332).
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를 실행하면 모든 것이 작동합니다.
- 원격에서 연결하려고하면 방화벽 문제가 있는지 확인하십시오.
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를 관리자 권한으로 실행 해야합니다
이것은 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가 관리자로 실행되지 않으면 실패 할 수 있습니다. 이제 모든 것이 작동합니다.
도움이 된 것은 'IISExpress'아이콘, '모든 응용 프로그램 표시'를 마우스 오른쪽 버튼으로 클릭하는 것이 었습니다. 그런 다음 웹 사이트를 선택하고 사용하는 aplicationhost.config를 보았으며 수정이 완벽했습니다.
이 질문에 대한 대답은 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
도움이 되길 바랍니다.
Win 8.1 및 외부 요청에서 IIS Express를 사용하는 데 문제가 있습니다.
다음 단계에 따라 외부 요청을 디버깅하십시오.
- IIS 설치
- 로컬 IIS를 사용하도록 Visual Studio 구성 (웹 프로젝트의 페이지 속성)
- IIS에서 전용 AppPool을 만들어 내 응용 프로그램과 작업
- 내 프로젝트에서 Oracle Client를 사용하고 있으며 32 비트 (64 비트는 Visual Studio에서 작동하지 않음)이어야하며 응용 프로그램 풀에서 32 비트를 허용해야합니다
- 포트 80에서 요청을 허용하도록 Windows 방화벽 구성 (인바운드 규칙)
작동합니다!
관리자에서 Visual Studio를 실행하면 바로 추가 할 수 있습니다
<binding protocol="http" bindingInformation="*:8080:*" />
또는
<binding protocol="https" bindingInformation="*:8443:*" />
으로
%userprofile%\My Documents\IISExpress\config\applicationhost.config
로컬 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를 직접 사용하여 개발할 수 있습니다 (원격 연결 허용).하지만 항상 관리자로 실행해야합니다 ... 싫습니다.
내가 찾은 가장 간단하고 멋진 방법은 사용하는 것입니다 (설정하는 데 2 분이 걸립니다).
localhost에서 실행되는 모든 작업에서 작동합니다. 가입 만하면 실행이 거의되지 않으며 localhost에서 실행하는 모든 사이트에서 어디서나 액세스 할 수있는 공개 URL을 얻을 수 있습니다.
이것은 IIS 설정이나 방화벽을 다루지 않고 원격 팀 동료에게 물건을 보여주는 데 좋습니다. 액세스를 중지하고 실행 파일을 종료하십시오.
ngrok authtoken xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ngrok http -host-header=localhost 89230
89230이 IIS Express 포트라고 가정
무료 요금제로도 여러 포트를 실행할 수 있습니다
리버스 프록시 접근 방식을 사용 하여이 문제를 해결했습니다.
wamp 서버를 설치하고 Apache 웹 서버의 간단한 리버스 프록시 기능을 사용했습니다.
Apache 웹 서버 (8081)를 수신하기 위해 새 포트를 추가했습니다. 그런 다음 해당 포트의 가상 호스트로 프록시 구성을 추가했습니다.
<VirtualHost *:8081>
ProxyPass / http://localhost:46935/
ProxyPassReverse / http://localhost:46935/
</VirtualHost>
나는이 모든 단계들을했지만 아무런 도움이되지 않았다. 그리고 필요한 것은 IIS Express를 통해 내 앱을 실행하는 것입니다 ...
도움이 되길 바랍니다.
로컬 네트워크의 다른 사용자에게 iis 요청을 제공 할 수 없었습니다. 위의 사항 외에도 BT Hub 라우터를 다시 시작하기 만하면됩니다.
이것은 엄청나게 훌륭하고 도메인 이름이 예쁜 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 구성 바인딩을 로컬 호스트에서 '*'로 변경했습니다.
binding protocol="http" bindingInformation="*:8888:*"
2) Defined inbound rule on firewall to allow the particular port for the protocol type: tcp
3) Add the following command to add network configuration for your port: netsh http add urlacl url=http://*:8888/ user=everyone
[project properties dialog]
For development using VisualStudio 2017 and a NetCore API-project:
1) In Cmd-Box: ipconfig /all to determine IP-address
2a) Enter the retrieved IP-address in Project properties-> Debug Tab
2b) Select a Port and attach that to the IP-address from step 2a.
3) Add an allow rule in the firewall to allow incoming TCP-traffic on the selected Port (my firewall triggered with a dialog: "Block or add rule to firewall"). Add will in that case do the trick.
Disadvantage of the solution above:
1) 동적 IP 주소를 사용하는 경우 다른 IP 주소가 할당 된 경우 위 단계를 다시 수행해야합니다.
2) 서버에 이제는 잊을 수있는 열린 포트가 있지만이 열린 포트는 원치 않는 손님을위한 초대입니다.
참고 URL : https://stackoverflow.com/questions/3313616/how-to-enable-external-request-in-iis-express
'Programing' 카테고리의 다른 글
Math.Pow ()는 .NET Framework에서 어떻게 구현됩니까? (0) | 2020.02.19 |
---|---|
ASP.NET MVC에서 404를 올바르게 처리하려면 어떻게해야합니까? (0) | 2020.02.19 |
조건부로 React 컴포넌트에 속성을 추가하는 방법은 무엇입니까? (0) | 2020.02.18 |
Twitter Bootstrap 버튼을 올바르게 정렬하려면 어떻게해야합니까? (0) | 2020.02.18 |
EditText에서 언더 바를 숨기는 방법 (0) | 2020.02.18 |