ローカルネットワーク上の他のマシン/デバイスを使用して、ローカルIISExpressインスタンスで実行しているWebサイトをテストしようとしています。 Win7 Proを実行しています。
ローカルネットワークセグメント上の別のマシンから自分のマシンを最初に参照しようとすると、400エラーが表示されます。ホスト名が無効です。
昇格されたコマンドプロンプトで次のようなコマンドを使用して、ACLへのリモートアクセスを許可する必要があることを理解しています。
netsh http add urlacl url=http://mymachinename:50333/ user=everyone
今、503サービスが利用できないというエラーが表示されます。
Windowsファイアウォールは現在オフになっており、アドレスhttp://localhost:50333
を使用してローカルIISExpressインスタンスを参照できます
この構成パズルの最後のピースは何ですか?
Applicationhost.configファイルにバインディング情報のエントリがないようです。
Applicationhost.configファイルを開きます。可能な場所は次のとおりです。
%userprofile%\Documents\IISExpress\config\applicationhost.config
$(solutionDir)\.vs\config\applicationhost.config
(VS2015)iisexpress.exe
からの出力を確認して確認してください。WebSiteエントリを見つけて、addマシン名を使用したバインディングに従います。
<binding protocol="http" bindingInformation=":50333:your-machine-name" />
IIS Expressを再起動します
私のために働いたことが一つだけありました。
*:portnumber:*
の使用は良くありませんでした。はい、それを実行し、Windowsファイアウォールが開いていることを確認した後、ポートに接続できましたが、それでも「503」エラーが発生しました。
ローカルでいくつかのことをテストしたところ、 http:// localhost のみが機能していることがわかりました。実際のIPアドレス(127.0.0.1ではなく、たとえば192.168.1.50)を使用すると、ローカルマシン上でも503が返されます。バインディングで実際のホスト名を使用しようとしましたが、IIS Expressは開始を拒否しました。これは、実際にはホスト名の解決方法に関係している可能性があります。私はそれ以上探求しませんでした。
最後に、この構成を使用することになりました。
<binding protocol="http" bindingInformation="*:53351:localhost" />
<binding protocol="http" bindingInformation="192.168.1.50:53351:*" />
そのようにして、http://192.168.1.50:53351
を使用してリモートマシンから接続できました。
このような完全なテーマで3時間以上無駄にした後、セットアップを共有することにしました。私の構成は、Windows 8でのWeb更新4用のVisual Express 2012です。これは、研究(少なくとも8年)以来初めてMS VSに戻ったものであり、Linuxのルールが確実になっています。 Djangoでは、この種のセットアップに10分の検索ドキュメントが必要でした。
テストのためにファイアウォールをオフにします
netsh advfirewall set allprofiles state off
私の場合、ローカルアドレスはlocalIP = 192.168.1.102に設定します(リンクには非数値ドメインを含めることができないため、mylocaldomain.comの代わりに以下を使用します。stackoverflowポリシーを参照してください)Documents\IISExpress\config\applicationhost.config
<bindings>
<binding protocol="http" bindingInformation="*:53351:mylocaldomain.com" />
<binding protocol="http" bindingInformation="*:53351:localhost" />
</bindings>
ISSエクスプレススタートサービスの自動実行を自動的に追加
<site name="NeuronCharts" id="2" serverAutoStart="true">
いくつかの奇妙なルールをhttpサーバーに追加します(これが必要であるかどうかはまだわかりません)
netsh http add urlacl url=http://mylocaldomain.com:53351/ user=everyone
vS IDEからではなく、IISExpressを手動で実行します
http://mylocaldomain.com:53351
が実行されている場合、ファイアウォールルールを追加できます。ファイアウォールルールを追加する
netsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=53351 remoteip=any action=allow
ローカルネットワークにアクセスする場合は、localsubnetを使用して、外部からサーバーにアクセスする場合はremoteipをanyに設定します。
ファイアウォールを開始する
netsh advfirewall set allprofiles state on
すべてがローカルおよびパブリックIPで機能しているかどうかをもう一度確認します
あなたの幸運を祈ります
ラファル
問題は、不適切なurlaclマッピングに関係していることがわかりました。これを理解するには:
netsh http show urlacl
http://+:80/
やバインド先のポートなどを探します。
次に使用する
netsh http delete url=<the url from the list>
これで問題は解決しました。
私には何も機能しませんでした。最終的に私は見つけました iisexpress-proxy
私の答えを参照してください https://stackoverflow.com/a/33623399/631527
別の解決策はngrok
です
問題は、ソリューションの代わりにwebフォルダー内のapplicationhost.configファイルを更新していることです。ソリューション構成ファイルは変更するものです
上記の答えはどれも私にとってはうまくいきませんでした。
同じサービスのnetshに2つのエントリがあります
netsh http show urlacl
1つは強いワイルドカードを使用し、もう1つは弱いワイルドカードを使用します。
弱いワイルドカードを持つものを削除すると、仕事をしました。
Netshのコンテキストでの強いワイルドカードと弱いワイルドカードの詳細
UrlPrefixのHost要素が単一のプラス記号(+)で構成される場合、UrlPrefixはそのスキーム、ポート、および相対URI要素のコンテキストで考えられるすべてのホスト名と一致し、強力なワイルドカードカテゴリに分類されます。
Host要素としてアスタリスク(*)が表示される場合、UrlPrefixは弱いワイルドカードカテゴリに分類されます。この種類のUrlPrefixは、強いワイルドカード、明示的な、またはIPバインドされた弱いワイルドカードUrlPrefixによってまだ一致していない、指定されたスキーム、ポート、および相対URIに関連付けられたホスト名と一致します。このホスト仕様は、状況によってはデフォルトのキャッチオールとして使用できます。または、多くのUrlPrefixesを使用せずにURL名前空間の大きなセクションを指定するために使用できます。
https://docs.Microsoft.com/en-gb/windows/desktop/Http/urlprefix-strings
@vikomallの解決後、VSを管理者として起動することを忘れないでください。これは私のためにそれを修正します。
Anthony Rizzoloの答えについて:Windows 8.1では、次のように入力する必要がありました。
netsh http delete urlacl url=<the url from the list>
例えば:
netsh http delete urlacl url=http://+:8689/