16

目的

IPアドレスをURLとして使用してASP.NETMVC4アプリケーションをデバッグするための、可能な限り簡単で段階的なセットアッププロセスを探しています。コンピューターのローカルIPアドレス(例:-)を使用して、Wi-Fi経由でローカルネットワークに接続されているAndroidフォンからアプリケーションにアクセスできるようにしたいhttp://192.168.1.109:25968。Windows7でVisualStudio2012RCを実行しています。

この質問は他の2つの質問(これこれ)によって解決されましたが、答えは非常に簡潔で、まったく役に立ちません。以前は、コンピューターを叩いて、何かが機能するまですべての設定を無意識に変更することで、この問題を解決する必要がありました。私はそれをもう一度経験する必要はありません。今回は何をしているのか理解したいです。

セットアップ情報

このプロジェクトは、デフォルトのASP.NETMVC4インターネットアプリケーションにすぎません。私はまだ何も変更していないと確信しています。

アプリケーションの[プロパティ]の[Web]タブが[ローカルIISWebサーバーを使用する]に設定されており、[IISエクスプレスを使用する]がオンになっています。プロジェクトのURLはhttp://localhost:25968/です。「locahost」に問題があるようですが、VSではIPアドレスやワイルドカードを入力できません。

アプリケーションのIISExpressapplicationhost.configファイルは次のとおりです。

<site name="APPLICATION_NAME" id="13">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:\Users\USERNAME\Documents\Visual Studio 11\Projects\APPLICATION_NAME" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:25968:localhost" />
    </bindings>
</site>

何が起こっていますか

ホストコンピュータからサイトに接続すると、http://localhost:25968うまく機能します。ホストコンピュータから使用しようとするとhttp://192.168.1.109:25968、「不正な要求-無効なホスト名、HTTPエラー400。要求のホスト名が無効です。」というメッセージが表示されます。ネットワーク上の別のコンピューターからこの同じURLを使用すると、タイムアウトになります。

4

4 に答える 4

21

ローカルホストとワイルドカードの両方のネットワークアダプターにバインドする権限を自分に付与し、それらにバインドするようにIIS Expressを構成して、ファイアウォールのポートを開きます。ワイルドカードを使用すると、IPアドレスが変更されたときに再構成する必要がありません。

手順の詳細:(ポート番号は5555と想定しています。代わりに実際のポートを使用してください)

  1. 管理者としてコマンドプロンプトから次のコマンドを実行します。

    netsh http add urlacl url=http://localhost:5555/ user="NT AUTHORITY\INTERACTIVE"
    netsh http add urlacl url=http://*:5555/ user="NT AUTHORITY\INTERACTIVE"
    
  2. .vs \ config \ applicationhost.config(またはVS2015より前の場合は%USERPROFILE%\ Documents \ IISExpress \ config \ applicationhost.config)で、サイトにワイルドカードバインディングを追加します。結果は次のようになります。

    <site name="..." id="...">
        <!-- application settings omitted for brevity -->
        <bindings>
            <binding protocol="http" bindingInformation="*:5555:localhost" />
            <binding protocol="http" bindingInformation="*:5555:*" />
        </bindings>
    </site>
    
  3. IISExpressサイトのファイアウォールポートを開きます。これは、管理コマンドプロンプトから実行できます。

    netsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=5555 profile=private remoteip=localsubnet action=allow
    
于 2013-10-11T04:09:12.220 に答える
5

これを試してみてください:

netsh http add urlacl url=http://192.168.1.109:25968/ user=everyone

差出人:http ://johan.driessen.se/posts/Accessing-an-IIS-Express-site-from-a-remote-computer

コンピュータのホスト名をIPアドレスに置き換えることができる場合があるため、IPが変更されるたびにホスト名を再実行する必要はありません。

于 2012-11-11T02:42:35.927 に答える
1

cfedukeが提供したリンクからすべての手順を実行する必要がありました。(彼が彼の答えで説明しているものだけではありません。)

  1. <binding protocol="http" bindingInformation="*:58938:192.168.1.42" />'localhost'のバインド後にapplicationhost.configに追加します。
  2. 走るnetsh http add urlacl url=http://192.168.1.42:58938/ user=everyone
  3. 走るnetsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=58938 profile=private remoteip=localsubnet action=allow
于 2012-11-11T05:22:14.253 に答える
0

マシンにNode.jsをインストールした場合次のツールを試してください:Ionut-Cristian Florescu

https://github.com/icflorescu/iisexpress-proxy

インストールするには、コマンドラインに書き込むだけです。npm install -g iisexpress-proxy

次に、プロジェクトにあるポートを確認し、外部ポートにマップします。 iisexpress-proxy [localPort] to [proxyPort]

于 2017-03-01T07:07:10.013 に答える