web-dev-qa-db-ja.com

で外部リクエストを有効にする方法 IIS 急行?

IIS Expressでリモートリクエストを有効にする方法を教えてください。 スコットガスリーはそれが可能であると書いた しかし彼は方法を言わなかった。

420
TedTel

IISチームサイトにブログ投稿があり、 IIS Express でリモート接続を有効にする方法を説明しています。これが要約された投稿の関連部分です。

VistaおよびWin7では、管理プロンプトから次のコマンドを実行します。

netsh http add urlacl url=http://vaidesg:8080/ user=everyone

XPの場合、まずWindows XP Service Pack 2サポートツールをインストールします。次に、管理プロンプトから次のコマンドを実行します。

httpcfg set urlacl /u http://vaidesg1:8080/ /a D:(A;;GX;;;WD)

382
Damian Edwards

あなたがする必要があるかもしれない3つの変更があります。

  1. IIS Expressに、すべてのIPアドレスとホスト名にバインドするように指示します。 .configファイルにあります。通常:
    • VS 2015:$(solutionDir)\.vs\config\applicationhost.config
    • <VS 2015:%userprofile%\My Documents\IISExpress\config\applicationhost.config

サイトのバインディング要素を見つけて追加します。

    <binding protocol="http" bindingInformation="*:8080:*" />
  1. Windowsの「http.sys」という名前のビットを設定します。管理者として、次のコマンドを実行します。
    netsh http add urlacl url=http://*:8080/ user=everyone

everyoneはwindowsグループです。 "Tout le monde"のようにスペースがあるグループには二重引用符を使用してください。

  1. Windowsファイアウォールを介してIIS Expressを許可します。

    セキュリティが強化されたWindowsファイアウォール/受信の規則/新しい規則...

    プログラム%ProgramFiles%\IIS Express\iisexpress.exe
    またはポート8080 TCP

iisexpress.exeを起動すると、このようなメッセージが表示されます

サイト "hello world" "application"/"のURL" http:// *:8080/"を正常に登録しました

332
Colonel Panic

数ヶ月前にこのワークフローを試していたとき、私は同じ問題に遭遇したのを覚えています。

これが、この種のシナリオ専用の単純なプロキシユーティリティを作成した理由です。 https://github.com/icflorescu/iisexpress-proxy

IIS Express Proxy を使うと、すべて簡単になります。「netsh http add urlacl url = vaidesg:8080/user = everyone」や「applicationhost.config」をいじる必要はありません。 」.

これをコマンドプロンプトで発行するだけです。

iisexpress-proxy 8080 to 3000

…そして、あなたは http:// vaidesg:3000 にあなたの遠隔装置を向けることができます。

ほとんどの場合、ISが簡単です。

iisexpress-proxy が見つかるまで、私には何も機能しませんでした。

管理者としてコマンドプロンプトを開き、実行します。

npm install -g iisexpress-proxy

それから

iisexpress-proxy 51123 to 81

visual Studioプロジェクトがlocalhost:51123で開き、外部IPアドレスx.x.x.x:81でアクセスしたいとします。

編集:私は現在ngrokを使っています

99
Toolkit

よいリソースは IISExpressを使うと開発時にSSLを扱うのが簡単になります Scott Hanselmanによる。

ポート80を介して外部でサービスを提供するためのIIS Expressの取得

33
Luke Sampson

これに対する補足として:

netsh http add urlacl url=http://vaidesg:8080/ user=everyone

これは英語版のWindowsでのみ動作します。ローカライズ版を使用している場合は、 "everyone"を別のものに置き換える必要があります。

  • オランダ語版を使用している場合は "Iedereen"
  • ドイツ語版を使用する場合は「Jeder」
  • ハンガリー語版を使用する場合は "Mindenki"

そうでない場合、エラーが発生します(SDDLの作成に失敗しました、エラー:1332)

31
breez

Visual Studioを使用している場合は、次の手順に従ってIPアドレスを介してIIS-Expressにアクセスします。

  1. あなたのホストのIPアドレスを入手してください:Windowsコマンドラインのipconfig
  2. GoTo

    $(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. あなたがリモートから接続しようとした場合、おそらくいくつかのファイアウォールの問題を探す
27

私はVisual Studio Professional 2015に "Conveyor by Keyoti"をインストールすることでそれを解決しました。例:

enter image description here

Conveyorを使用すると、ネットワーク上の外部タブレットや携帯電話から、またはAndroidエミュレータから(http://10.0.2.2:<hostport>なしで)Webアプリケーションをテストできます。

手順は次のリンクにあります。

https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti

17
Ronny Morán

大佐パニックの答え を試してみたがVisual Studioでうまくいかない場合は、これを試してみてください。

IIS Express設定に別の<binding />を追加

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

最後に、 管理者としてVisual Studioを実行する必要があります

10
Bruce

私を助けたのは、 'IISExpress'アイコン、 'Show All applications'を右クリックしたことです。それからウェブサイトを選択して、私はそれがどのaplicationhost.configを使用しているかを見ました、そして、訂正は完全に行きました。

IISExpress configuration

7
Emmanuel

これは、httpとhttpsの両方でリモートアクセスを有効にするために、Visual Studio 2015を搭載したWindows 10に対して行ったことです。

最初のステップは、アプリケーションを内部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の下に2つの新しいバインディングを追加します。あなたが好きなら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として起動します。 Webプロジェクトプロジェクトファイルを右クリックしてPropertiesを選択します。 Webタブに移動して、Create Virtual Directoryをクリックします。 Visual Studioが管理者として実行されていない場合、おそらく失敗します。これですべてうまくいくはずです。

enter image description here

7
Ogglas

この質問に対する一般的な回答は、IIS Expressをwebmatrixと連携させるためのガイドです。私は このガイドを VS 2010で動かそうとするときにもっと役に立ちます。

手順3と4(管理者としてIIS Expressを実行)を実行したところ、ファイアウォールを一時的に無効にして機能させる必要がありました。

5
Chad

IIS Expressの設定を変更したり、新しいHTTP.sysルールを追加したり、管理者としてVisual Studioを実行したりする代わりに、ポート転送を設定してみてください。

基本的にあなたはあなたのウェブサイトが動いているIP:PORTをあなたのマシンの他の空きポートに転送する必要がありますが、localhostではなく外部ネットワークアダプタに転送する必要があります。

重要なのは、IIS Express(少なくともWindows 10では)が[::1]:portにバインドされ、IPv6ポートで待機するということです。これを考慮に入れる必要があります。

これは私がこの仕事をした方法です - http://programmingflow.com/2017/02/25/iis-express-on-external-ip.html

それが役に立てば幸い。

5
srmrco

Win 8.1でIIS Expressを使用しているときに問題が発生し、外部からの要求があります。

外部リクエストをデバッグするには、次の手順に従います。

  1. IISをインストールする
  2. ローカルIIS(Webプロジェクトのページプロパティ)を使用するようにVisual Studioを構成します。
  3. 自分のアプリケーションを操作するためのIISに専用のAppPoolを作成します。
  4. 私のプロジェクトでは、Oracle Clientを使用しています。32ビットでなければなりません(64ビットはVisual Studioでは機能しません)。次に、アプリケーションプールで32ビットを許可する必要があります
  5. ポート80での要求を許可するようにWindowsファイアウォールを構成します(受信規則)。

それは働いています!

3
Robson Douglas

私が見つけた最も簡単でクールな方法は使用することでした(セットアップには2分かかります)。

https://ngrok.com/

Localhost上で動作しているものなら何でも動作します。ただサインアップして、少し興奮して走らせて、あなたがlocalhostで走るものは何でもあなたがどこからでもアクセスできるパブリックURLを得る。

これは、リモートのチームメイトにものを見せるために便利で、IISセットアップやファイアウォールをいじる必要はありません。実行可能ファイルを終了するだけでアクセスを停止したい。

ngrok authtoken xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

ngrok http -Host-header=localhost 89230

89230がIIS Expressポートであると仮定します。

無料プランでも複数のポートを実行できます

2
Artur Kędzior

ローカルの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
konzo

あなたが管理者からVisual Studioを実行するならば、あなたはただ加えることができます

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

または

<binding protocol="https" bindingInformation="*:8443:*" />

%userprofile%\My Documents\IISExpress\config\applicationhost.config
2
Andrii

私はこれらすべてのステップを実行しましたが、何も助けになりませんでした。そして、私が必要としているのは、IIS Expressからアプリを実行するだけです。

enter image description here

それが役に立てば幸い。

1
Maksym Labutin

私はこの問題をリバースプロキシアプローチを使って解決しました。

私はwampサーバをインストールし、Apacheウェブサーバの簡単なリバースプロキシ機能を使いました。

Apache Webサーバー(8081)をlistenするための新しいポートを追加しました。それから私はそのポートの仮想ホストとしてプロキシ設定を追加しました。

<VirtualHost *:8081>
ProxyPass / http://localhost:46935/
ProxyPassReverse / http://localhost:46935/
</VirtualHost>
0
mustafacanturk

私は以下のことをして、接続することができました:

1)IIS express configバインディングをローカルホストから '*'に変更

バインディングプロトコル= "http" bindingInformation = "*:8888:*"

2)プロトコルタイプの特定のポートを許可するようにファイアウォールで定義された受信規則:tcp

3)次のコマンドを追加して、あなたのポートのネットワーク設定を追加します。netsh http add urlacl url = http:// *:8888/user = everyone

0
dhakalan

私は自分のローカルネットワークの他のユーザーにiisリクエストを送ることができませんでした。

0
Terry Kernan

これはめちゃくちゃ素晴らしいですし、かなりのドメイン名でHTTPSをカバーしています:

http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx

上記のリンクが消えてしまった場合に備えて、SOのどこにも見つからなかった本当に素晴らしい部分です。

> 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の証明書のプロパティから取得できる "拇印"です。

0
eselk