IIS Expressでリモートリクエストを有効にする方法を教えてください。 スコットガスリーはそれが可能であると書いた しかし彼は方法を言わなかった。
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)
あなたがする必要があるかもしれない3つの変更があります。
.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" "application"/"のURL" http:// *:8080/"を正常に登録しました
数ヶ月前にこのワークフローを試していたとき、私は同じ問題に遭遇したのを覚えています。
これが、この種のシナリオ専用の単純なプロキシユーティリティを作成した理由です。 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
を使っています
よいリソースは IISExpressを使うと開発時にSSLを扱うのが簡単になります Scott Hanselmanによる。
ポート80を介して外部でサービスを提供するためのIIS Expressの取得
これに対する補足として:
netsh http add urlacl url=http://vaidesg:8080/ user=everyone
これは英語版のWindowsでのみ動作します。ローカライズ版を使用している場合は、 "everyone"を別のものに置き換える必要があります。
そうでない場合、エラーが発生します(SDDLの作成に失敗しました、エラー:1332)
Visual Studioを使用している場合は、次の手順に従ってIPアドレスを介してIIS-Expressにアクセスします。
ipconfig
GoTo
$(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"をインストールすることでそれを解決しました。例:
Conveyorを使用すると、ネットワーク上の外部タブレットや携帯電話から、またはAndroidエミュレータから(http://10.0.2.2:<hostport>
なしで)Webアプリケーションをテストできます。
手順は次のリンクにあります。
https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti
大佐パニックの答え を試してみたがVisual Studioでうまくいかない場合は、これを試してみてください。
IIS Express設定に別の<binding />
を追加
<bindings>
<binding protocol="http" bindingInformation="*:8080:localhost" />
<binding protocol="http" bindingInformation="*:8080:hostname" />
</bindings>
最後に、 管理者としてVisual Studioを実行する必要があります
これは、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が管理者として実行されていない場合、おそらく失敗します。これですべてうまくいくはずです。
この質問に対する一般的な回答は、IIS Expressをwebmatrixと連携させるためのガイドです。私は このガイドを VS 2010で動かそうとするときにもっと役に立ちます。
手順3と4(管理者としてIIS Expressを実行)を実行したところ、ファイアウォールを一時的に無効にして機能させる必要がありました。
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
それが役に立てば幸い。
Win 8.1でIIS Expressを使用しているときに問題が発生し、外部からの要求があります。
外部リクエストをデバッグするには、次の手順に従います。
それは働いています!
私が見つけた最も簡単でクールな方法は使用することでした(セットアップには2分かかります)。
Localhost上で動作しているものなら何でも動作します。ただサインアップして、少し興奮して走らせて、あなたがlocalhostで走るものは何でもあなたがどこからでもアクセスできるパブリックURLを得る。
これは、リモートのチームメイトにものを見せるために便利で、IISセットアップやファイアウォールをいじる必要はありません。実行可能ファイルを終了するだけでアクセスを停止したい。
ngrok authtoken xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ngrok http -Host-header=localhost 89230
89230がIIS Expressポートであると仮定します。
無料プランでも複数のポートを実行できます
ローカルの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を直接使用して開発することもできます(これによりリモート接続が可能になります)が、代わりに管理者として実行する必要があります。
あなたが管理者からVisual Studioを実行するならば、あなたはただ加えることができます
<binding protocol="http" bindingInformation="*:8080:*" />
または
<binding protocol="https" bindingInformation="*:8443:*" />
に
%userprofile%\My Documents\IISExpress\config\applicationhost.config
私はこの問題をリバースプロキシアプローチを使って解決しました。
私はwampサーバをインストールし、Apacheウェブサーバの簡単なリバースプロキシ機能を使いました。
Apache Webサーバー(8081)をlistenするための新しいポートを追加しました。それから私はそのポートの仮想ホストとしてプロキシ設定を追加しました。
<VirtualHost *:8081>
ProxyPass / http://localhost:46935/
ProxyPassReverse / http://localhost:46935/
</VirtualHost>
私は以下のことをして、接続することができました:
1)IIS express configバインディングをローカルホストから '*'に変更
バインディングプロトコル= "http" bindingInformation = "*:8888:*"
2)プロトコルタイプの特定のポートを許可するようにファイアウォールで定義された受信規則:tcp
3)次のコマンドを追加して、あなたのポートのネットワーク設定を追加します。netsh http add urlacl url = http:// *:8888/user = everyone
私は自分のローカルネットワークの他のユーザーにiisリクエストを送ることができませんでした。
これはめちゃくちゃ素晴らしいですし、かなりのドメイン名で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の証明書のプロパティから取得できる "拇印"です。