IIS Expressでリモート要求を有効にするにはどうすればよいですか?スコット・ガスリーはそれが可能であると書いたが、彼はどのように述べなかった。
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)
netsh
接続を許可するコマンドはありますか?
user={PARAM_USER}
自分の言語になります。
user=todos
代わりにを使用してくださいuser=everyone
。
必要な変更が3つあります。
.config
のファイル。通常:
$(solutionDir)\.vs\config\applicationhost.config
%userprofile%\My Documents\IISExpress\config\applicationhost.config
サイトのbinding要素を見つけて追加します
<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」アプリケーション「/」のURL「http:// *:8080 /」が正常に登録されました
users=everyone
、netsh
(2番目のステップ)のパラメーターがエラー1789を引き起こす可能性があります。解決策はeveryone
、対応する言語のグループ名に変換することです。
Project Url
と、ホスト名にアスタリスクを入力するとエラーが発生します。他に何か入力すると、新しい仮想ディレクトリを作成しようとします。application.configのエントリにはリンクしません。
bindingInformation="*:8080:hostname"
と手順2 url=http://hostname:8080/
でコンピューターのホスト名を使用し、WebタブのVisual Studio WebプロジェクトプロパティでProject Urlをに設定する必要がありhttp://hostname:8080/
ます。*
すでに作成している場合は、urlaclを削除します。両方ある場合は機能しません。最後に、WebブラウザーでアクセスするURLは、localhostではなく、ホスト名を参照する必要があります。
<binding protocol="http" bindingInformation="*:8080:localhost" />
数か月前にこのワークフローを試したときに、同じ問題に遭遇したことを覚えています。
これが、この種のシナリオ専用に単純なプロキシユーティリティを作成した理由です: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
良いリソースがある開発時のSSLを使用した作業がIISExpressと簡単ですScott Hanselmanにするます。
あなたがしているのは、IIS Expressをポート80経由で外部に提供するためのセクションです
Visual Studioを使用している場合は、次の手順に従ってIIS-Express over IP-Adressにアクセスします。
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アドレス
Visual Studio Professional 2015に「Conveyor by Keyoti」をインストールして解決しました。Conveyorは、外部リクエストを有効にするポート(45455)でリモートアドレス(IP)を生成します。例:
コンベアを使用すると、ネットワーク上の外部タブレットや携帯電話から、またはAndroidエミュレーター( http://10.0.2.2:<hostport>
)
手順は次のリンクにあります。
https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti
パニック大佐の答えを試したが、Visual Studioで機能しない場合は、次のことを試してください。
<binding />
IIS Express構成に別のものを追加する
<bindings>
<binding protocol="http" bindingInformation="*:8080:localhost" />
<binding protocol="http" bindingInformation="*:8080:hostname" />
</bindings>
最後に、Visual Studioを管理者として実行する必要があります
私を助けたのは、「IISExpress」アイコン「すべてのアプリケーションを表示」を右クリックしたことです。次に、Webサイトを選択すると、どのaplicationhost.configが使用されているかがわかり、修正は完全に行われました。
これは、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>
の下に2つの新しいバインディングを追加しますbindings
。必要に応じてHTTPSも使用できます。
<binding protocol="http" bindingInformation="*:12345:192.168.1.15" />
<binding protocol="https" bindingInformation="*:44300:192.168.1.15" />
ファイアウォールに次のルールを追加し、新しいcmd
プロンプトを管理者として開き、次のコマンドを実行します。
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
あなたはあなたのウェブサイトの実行をあなたのマシンの他の空きポートに転送する必要がありますが、ローカルホストではなく外部ネットワークアダプター上で。
重要なのは、IIS Expressが(少なくともWindows 10では)[::1]:port
IPv6ポートでリッスンするという意味にバインドされていることです。これを考慮に入れる必要があります。
これが私がこの作品を作った方法です-http://programmingflow.com/2017/02/25/iis-express-on-external-ip.html
それが役に立てば幸い。
私が見つけた最も簡単でクールな方法は使用することでした(セットアップには2分かかります):
これは、localhostで実行されているすべてのもので動作します。サインアップするだけで、実行可能ファイルをほとんど実行せず、localhostで実行するものはどこからでもアクセスできるパブリックURLを取得します。
これは、IISのセットアップやファイアウォールをいじる必要がなく、リモートチームの仲間に物を見せるために適しています。実行可能ファイルを終了するだけでアクセスを停止したい。
ngrok authtoken xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ngrok http -host-header=localhost 89230
89230がIIS Expressポートであると想定
無料プランでも複数のポートを実行できます
Win 8.1および外部リクエストでIIS Expressを使用するときにいくつかの問題があります。
次の手順に従って、外部リクエストをデバッグします。
うまくいきました!
管理者からVisual Studioを実行する場合は、
<binding protocol="http" bindingInformation="*:8080:*" />
または
<binding protocol="https" bindingInformation="*:8443:*" />
に
%userprofile%\My Documents\IISExpress\config\applicationhost.config
$(SolutionDir).vs\config\applicationHost.config
適用したほか、Windowsファイアウォールでアプリケーションのポート(8443)を開く必要がありました。
ローカル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を直接使用して開発することもできます(これにより、リモート接続が可能になります)が、常に管理者として実行する必要があります...私はそれが好きではありません。
リバースプロキシアプローチを使用してこの問題を解決しました。
Wampサーバーをインストールし、Apache Webサーバーのシンプルなリバースプロキシ機能を使用しました。
Apache Webサーバー(8081)をリッスンする新しいポートを追加しました。次に、そのポートの仮想ホストとしてプロキシ構成を追加しました。
<VirtualHost *:8081>
ProxyPass / http://localhost:46935/
ProxyPassReverse / http://localhost:46935/
</VirtualHost>
これはめちゃくちゃ素晴らしいですし、かなりのドメイン名の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)IISエクスプレス構成バインディングをローカルホストから「*」に変更
binding protocol = "http" bindingInformation = "*:8888:*"
2)プロトコルタイプに特定のポートを許可するためにファイアウォールで定義されたインバウンドルール:tcp
3)次のコマンドを追加して、ポートのネットワーク構成を追加します。netsh http add urlacl url = http:// *:8888 / user = everyone
[プロジェクトプロパティダイアログ]
VisualStudio 2017とNetCore APIプロジェクトを使用した開発の場合:
1)Cmd-Box:ipconfig / allでIPアドレスを決定します
2a)取得したIPアドレスを[プロジェクトのプロパティ]-> [デバッグ]タブに入力します
2b)ポートを選択し、ステップ2aのIPアドレスに接続します。
3)ファイアウォールに許可ルールを追加して、選択したポートでの着信TCPトラフィックを許可します(私のファイアウォールは「ファイアウォールへのルールのブロックまたは追加」でトリガーされます)。その場合は、ウィルを追加してください。
上記のソリューションの欠点:
1)動的IPアドレスを使用する場合は、別のIPアドレスが割り当てられている場合に備えて、上記の手順をやり直す必要があります。
2)あなたのサーバーには、忘れているかもしれない開いたポートがありますが、この開いたポートは、不要なゲストへの招待状のままです。