IIS Expressでリモート要求を有効にするにはどうすればよいですか?スコットガスリーはそれが可能であると書いたが、彼はその方法を言わなかった。
26 に答える
IISチームサイトに、IISExpressでリモート接続を有効にする方法を説明するブログ投稿があります。要約されたその投稿の関連部分は次のとおりです。
VistaおよびWin7では、管理プロンプトから次のコマンドを実行します。
netsh http add urlacl url=http://vaidesg:8080/ user=everyone
XPの場合、最初にWindows XP ServicePack2サポートツールをインストールします。次に、管理プロンプトから次のコマンドを実行します。
httpcfg set urlacl /u http://vaidesg1:8080/ /a D:(A;;GX;;;WD)
行う必要があるかもしれない3つの変更があります。
- IISExpress自体にすべてのIPアドレスとホスト名にバインドするように指示します。あなたの
.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グループはどこにありますか。「Toutlemonde」のようにスペースが含まれるグループには、二重引用符を使用します。
IISExpressがWindowsファイアウォールを通過できるようにします。
スタート/高度なセキュリティを備えたWindowsファイアウォール/インバウンドルール/新しいルール...
プログラム
%ProgramFiles%\IIS Express\iisexpress.exe
またはポート8080TCP
開始すると、次iisexpress.exe
のようなメッセージが表示されます。
サイト「helloworld」アプリケーション「/」のURL「http:// *:8080/」が正常に登録されました
iisexpress-proxyが見つかるまで、何も機能しませんでした。
管理者としてコマンドプロンプトを開き、実行します
npm install -g iisexpress-proxy
それから
iisexpress-proxy 51123 to 81
Visual Studioプロジェクトがlocalhost:51123で開き、外部IPアドレスxxxx:81でアクセスしたいとします。
編集:私は現在使用していますngrok
数か月前にこのワークフローを試しているときに、同じ問題が発生したことを覚えています。
そのため、この種のシナリオ専用の単純なプロキシユーティリティを作成しました: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に向けることができます。
ほとんどの場合、単純な方が優れています。
Visual Studioを使用している場合は、次の手順に従って、IIS-ExpressoverIP-Adressにアクセスします。
- ホストのIPアドレスを取得する:
ipconfig
Windowsコマンドラインで 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アドレスを使用- 管理者権限でVisualStudioを実行すると、すべてが機能するはずです
- リモートから接続しようとする場合は、ファイアウォールの問題を探すかもしれません
これの補足として:
netsh http add urlacl url=http://vaidesg:8080/ user=everyone
これは、英語版のWindowsでのみ機能します。ローカライズされたバージョンを使用している場合は、「全員」を別のものに置き換える必要があります。次に例を示します。
- オランダ語版を使用する場合の「Iedereen」
- ドイツ語版を使用する場合の「Jeder」
- ハンガリー語版使用時の「ミンデンキ」
そうしないと、エラーが発生します(SDDLの作成に失敗しました、エラー:1332)
優れたリソースは、Scott HanselmanによるIISExpressを使用すると、開発時にSSLを使用する方が簡単です。
あなたが求めているのは、IISExpressをポート80を介して外部で提供するためのセクションです。
Visual Studio Professional2015に「ConveyorbyKeyoti」をインストールすることで解決しました。Conveyorは、外部要求を有効にするポート(45455)を使用してREMOTEアドレス(IP)を生成します。例:
http://10.0.2.2:<hostport>
Conveyorを使用すると、ネットワーク上の外部のタブレットや電話から、またはAndroidエミュレーター(なし)からWebアプリケーションをテストできます。
手順は次のリンクにあります。
https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti
これは、httpとhttpsの両方でリモートアクセスを有効にするために、VisualStudio2015を使用してWindows10で行ったことです。
最初のステップは、アプリケーションを内部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>
の下に2つの新しいバインディングを追加します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
次に、VisualStudioをとして起動しAdministrator
ます。Webプロジェクトプロジェクトファイルを右クリックして、を選択しますProperties
。Web
タブに移動し、をクリックしますCreate Virtual Directory
。Visual Studioが管理者として実行されていない場合、これはおそらく失敗します。これですべてが機能するはずです。
パニック大佐の答えを試したが、Visual Studioで機能しない場合は、次のことを試してください。
IISExpress構成に別のものを追加<binding />
します
<bindings>
<binding protocol="http" bindingInformation="*:8080:localhost" />
<binding protocol="http" bindingInformation="*:8080:hostname" />
</bindings>
最後に、管理者としてVisualStudioを実行する必要があります
このスレッドで回答を組み合わせて、これが私がそれを修正した方法です(Visual Studio 2019):
管理者としてVisualStudioを起動し、通常どおりにWebサービスを実行します。
タスクバーでIISExpressアイコンを見つけて右クリックし、[すべてのアプリケーションを表示]をクリックします。
Webサービスを選択し、以下に表示される構成パスをメモします。設定ファイルをクリックして、編集用に開きます。
この構成ファイルでWebサービス(ポートの検索例)を見つけてから、次のような行を見つけます
*
:: yourport:localhostその後、次のように新しい行を追加します。
:
yourport:*
この場合、将来変更される可能性のある特定のIPアドレスでバインディングを作成する必要はありません。
これが誰かの助けになることを願っています。
私が見つけた最も簡単でクールな方法は、使用することでした(セットアップには2分かかります):
ローカルホストで実行されているものなら何でも動作します。サインアップして、少し言い訳を実行するだけで、ローカルホストで実行するものはすべて、どこからでもアクセスできるパブリックURLを取得します。
これは、IISのセットアップやファイアウォールをいじることなく、リモートのチームメイトにコンテンツを表示するのに適しています。アクセスを停止したいだけで実行可能ファイルを終了します。
ngrok authtoken xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ngrok http -host-header=localhost 89230
89230がIISExpressポートであると想定
無料プランでも複数のポートを実行できます
この質問に対する受け入れられた答えは、IISExpressをwebmatrixで動作させるためのガイドです。このガイドをVS2010で動作させる場合は、このガイドの方が便利です。
手順3と4(管理者としてIIS Expressを実行)を実行したところ、ファイアウォールを一時的に無効にして機能させる必要がありました。
IIS Expressの構成を変更したり、新しいHTTP.sysルールを追加したり、管理者としてVisual Studioを実行したりする代わりに、ポート転送を設定してみてください。
IP:PORT
基本的に、Webサイトの実行をマシン上の他の空きポートに転送する必要がありますが、ローカルホストではなく外部ネットワークアダプターに転送する必要があります。
重要なのは、IIS Express(少なくともWindows 10では)[::1]:port
がIPv6ポートでリッスンすることを意味するようにバインドすることです。これを考慮に入れる必要があります。
これが私がこの作業を行った方法です-http://programmingflow.com/2017/02/25/iis-express-on-external-ip.html
それが役に立てば幸い。
Win8.1でのIISExpressと外部要求の使用に問題があります。
次の手順に従って、外部リクエストをデバッグします。
- IISをインストールします
- ローカルIISを使用するようにVisualStudioを構成する(Webプロジェクトのページプロパティ)
- IISで排他的なAppPoolを作成して、アプリケーションを操作します
- 私のプロジェクトでは、Oracleクライアントを使用しており、32ビットである必要があります(64ビットはVisual Studioでは機能しません)。その後、アプリケーションプールで32ビットを許可する必要があります。
- ポート80での要求を許可するようにWindowsファイアウォールを構成する(インバウンドルール)
動作しています!
ローカル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を直接使用して開発することもできます(リモート接続が可能になります)が、管理者として常に実行する必要があります...私はそれが好きではありません。
管理者からVisualStudioを実行している場合は、
<binding protocol="http" bindingInformation="*:8080:*" />
また
<binding protocol="https" bindingInformation="*:8443:*" />
の中へ
%userprofile%\My Documents\IISExpress\config\applicationhost.config
リバースプロキシアプローチを使用してこの問題を解決しました。
Wampサーバーをインストールし、ApacheWebサーバーの単純なリバースプロキシ機能を使用しました。
Apache Webサーバー(8081)をリッスンするための新しいポートを追加しました。次に、そのポートの仮想ホストとしてプロキシ構成を追加しました。
<VirtualHost *:8081>
ProxyPass / http://localhost:46935/
ProxyPassReverse / http://localhost:46935/
</VirtualHost>
これを使用している私にとっては、比較的単純で簡単です。
[拡張機能]ダイアログで[コンベヤー]を検索して、VisualStudioExtensionをダウンロードします。次に、インストールするだけです。
フォーム: https ://marketplace.visualstudio.com/items?itemName = vs-publisher-1448185.ConveyorbyKeyoti
ローカルネットワーク内の他のユーザーにiis要求を提供できませんでした。(上記に加えて)必要なのは、BTハブルーターを再起動することだけでした。
これはめちゃくちゃ素晴らしいですし、かなりのドメイン名で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の証明書プロパティから取得できる「指紋」です。
私は次のことを行い、接続することができました:
1)IISExpressの構成バインディングをローカルホストから「*」に変更しました
バインディングprotocol="http" bindingInformation = "*:8888:*"
2)プロトコルタイプの特定のポートを許可するようにファイアウォールでインバウンドルールを定義しました:tcp
3)次のコマンドを追加して、ポートのネットワーク構成を追加します。netsh http add urlacl url = http:// *:8888 / user = everyone
[プロジェクトプロパティダイアログ]
VisualStudio2017とNetCoreAPIプロジェクトを使用した開発の場合:
1)Cmd-Boxの場合:ipconfig / allを使用して、IPアドレスを決定します
2a)取得したIPアドレスを[プロジェクトのプロパティ]->[デバッグ]タブに入力します
2b)ポートを選択し、手順2aのIPアドレスに接続します。
3)ファイアウォールに許可ルールを追加して、選択したポートで着信TCPトラフィックを許可します(私のファイアウォールは、[ファイアウォールにルールをブロックまたは追加する]ダイアログでトリガーされます)。その場合、追加はトリックを行います。
上記のソリューションのデメリット:
1)動的IPアドレスを使用する場合、別のIPアドレスが割り当てられている場合に備えて、上記の手順をやり直す必要があります。
2)サーバーには、忘れてしまう可能性のある開いているポートがありますが、この開いているポートは、不要なゲストへの招待状のままです。