191

ローカルネットワーク上の他のマシン/デバイスを使用して、ローカルIISExpressインスタンスで実行しているWebサイトをテストしようとしています。Win7Proを実行しています。

ローカルネットワークセグメント上の別のマシンから自分のマシンを最初に参照しようとすると、400エラーが発生します:ホスト名が無効です。

次のような管理者特権のコマンドプロンプトでコマンドを使用して、ACLへのリモートアクセスを許可する必要があることを理解しています。

netsh http add urlacl url=http://mymachinename:50333/ user=everyone

今、私は503サービスが利用できませんというエラーを受け取ります。

Windowsファイアウォールは現在シャットオフされており、アドレスを使用してローカルIISExpressインスタンスを参照できます。http://localhost:50333

この構成パズルの最後のピースは何ですか?

4

10 に答える 10

279

applicationhost.config ファイルにバインド情報エントリがないようです。

  1. applicationhost.config ファイルを開きます。可能な場所は次のとおりです。

    • %userprofile%\Documents\IISExpress\config\applicationhost.config
    • $(solutionDir)\.vs\config\applicationhost.config(VS2015)
    • それができない場合は、 からの出力をiisexpress.exe確認してください。
  2. WebSite エントリを見つけて、マシン名を使用して次のバインディングを追加します。

         <binding protocol="http" bindingInformation=":50333:your-machine-name" />
    
  3. IIS Express を再起動します

于 2011-03-27T21:07:41.853 に答える
19

このような完全なテーマで 3 時間以上を無駄にした後、セットアップを共有することにしました。私の構成は、Windows 8 での Web 更新 4 用の Visual Express 2012 です。これは、研究以来 (少なくとも 8 年)、MS VS に戻ったのは初めてであり、今では Linux のルールであると確信しています。django では、この種のセットアップでドキュメントを検索するのに 10 分かかりました。

  1. テストのためにファイアウォールをオフにする

    netsh advfirewall set allprofiles state off
    
  2. 私の場合、ローカル アドレスは 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>
    
  3. ISS Express 開始サービスの autorun を自動的に追加します

    <site name="NeuronCharts" id="2" serverAutoStart="true">
    
  4. httpサーバーにいくつかの奇妙なルールを追加します(これが必要かどうかはまだわかりません)

    netsh http add urlacl url=http://mylocaldomain.com:53351/ user=everyone
    
  5. VS IDE からではなく IISExpress を手動で実行する

  6. ISSExpress がバインディングを登録していることがわかります。
  7. http://mylocaldomain.com:53351 動作している場合はブラウザを実行し、ファイアウォール ルールを追加できます
  8. ファイアウォール ルールを追加

    netsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=53351 remoteip=any action=allow
    

外部からサーバーにアクセスする場合は、remoteip を any に設定します。ローカル ネットワークにアクセスする場合は、localsubnet を使用します。

  1. ファイアウォールを開始する

    netsh advfirewall set allprofiles state on
    
  2. すべてがローカル IP とパブリック IP で機能しているかどうかをもう一度確認します

あなたの幸運を祈ります

ラファル

于 2014-10-17T14:32:11.643 に答える
10

問題は、不適切な urlacl マッピングに関係していることがわかりました。これを理解するには:

netsh http show urlacl 

http://+:80/またはバインド先のポートなどを探します。

次に使用します

netsh http delete url=<the url from the list>

これで問題は解決しました。

于 2016-07-22T17:44:45.410 に答える
7

何もうまくいきませんでした。最後に、iisexpress-proxyを見つけました

私の答えを参照してください https://stackoverflow.com/a/33623399/631527

別の解決策はngrok

于 2015-11-10T05:34:47.270 に答える
0

上記の答えはどれもうまくいきませんでした。

同じサービスに対して netsh に 2 つのエントリがありました

netsh http show urlacl

ここに画像の説明を入力

1 つは強力なワイルドカードを使用し、もう 1 つは弱いワイルドカードを使用しています。

ワイルドカードが弱いものを削除すると、うまくいきました。

netsh のコンテキストでの強力なワイルドカードと弱いワイルドカードの詳細

UrlPrefix のホスト要素が単一のプラス記号 (+) で構成される場合、UrlPrefix はそのスキーム、ポート、および relativeURI 要素のコンテキストで可能なすべてのホスト名に一致し、強力なワイルドカード カテゴリに分類されます。

アスタリスク (*) がホスト要素として表示される場合、UrlPrefix は弱いワイルドカード カテゴリに分類されます。この種類の UrlPrefix は、強力なワイルドカード、明示的、または IP バインドの弱いワイルドカード UrlPrefix によってまだ一致していない、指定されたスキーム、ポート、および relativeURI に関連付けられたホスト名と一致します。このホスト仕様は、状況によってはデフォルトのキャッチオールとして使用することも、多くの UrlPrefix を使用せずに URL 名前空間の大きなセクションを指定するために使用することもできます。

https://docs.microsoft.com/en-gb/windows/desktop/Http/urlprefix-strings

于 2018-10-01T08:44:56.933 に答える