Programing

IIS Express에서 외부 요청을 활성화하는 방법은 무엇입니까?

lottogame 2020. 2. 18. 22:37
반응형

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)


변경해야 할 세 가지가 있습니다.

  1. 모든 IP 주소 및 호스트 이름에 바인딩하도록 IIS Express 자체에 지시하십시오. 당신에 .config파일. 일반적으로
    • VS 2015 : $(solutionDir)\.vs\config\applicationhost.config
    • <VS 2015 : %userprofile%\My Documents\IISExpress\config\applicationhost.config

사이트의 바인딩 요소를 찾아서 추가하십시오.

    <binding protocol="http" bindingInformation="*:8080:*" />
  1. 'http.sys'라는 Windows 비트를 설정하십시오. 관리자로서 다음 명령을 실행하십시오.
    netsh http add urlacl url=http://*:8080/ user=everyone

everyoneWindows 그룹은 어디에 있습니까 ? "Tout le monde"와 같이 공백이있는 그룹에는 큰 따옴표를 사용하십시오.

  1. 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에 액세스하십시오.

  1. ipconfigWindows 명령 줄에서 호스트 IP 주소 얻기
  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 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" />

방화벽에 다음 규칙을 추가하고 cmdadmin 으로 새 프롬프트를 열고 다음 명령을 실행하십시오.

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를 보았으며 수정이 완벽했습니다.

IISExpress 구성


이 질문에 대한 대답은 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를 사용하는 데 문제가 있습니다.

다음 단계에 따라 외부 요청을 디버깅하십시오.

  1. IIS 설치
  2. 로컬 IIS를 사용하도록 Visual Studio 구성 (웹 프로젝트의 페이지 속성)
  3. IIS에서 전용 AppPool을 만들어 내 응용 프로그램과 작업
  4. 내 프로젝트에서 Oracle Client를 사용하고 있으며 32 비트 (64 비트는 Visual Studio에서 작동하지 않음)이어야하며 응용 프로그램 풀에서 32 비트를 허용해야합니다
  5. 포트 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 ​​분이 걸립니다).

https://ngrok.com/

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

반응형