VS2010でプロジェクトを開発しており、IIS Expressを介してローカルにサイトを表示できます。ネットワーク経由の外部アクセスを有効にしたいと思います。
私のすべての研究により、このブログエントリに送られました: http://blogs.iis.net/vaidyg/archive/2010/07/29/serving-external-traffic-with-webmatrix-beta.aspx =、これは便利ですが、Visual Studioで開始されたプロジェクトのバインドを構成する方法を示していないようです(スクリーンショットで画面が見つからず、applicationhost.configでバインド情報を編集しましたが、 Visual Studioからサイトを実行すると反映されます)。
1applicationhost.configファイル(ドキュメントのIISExpressフォルダーにあります)を編集すると、サイトバインディングは次のようになります。
<bindings>
<binding protocol="http" bindingInformation="*:8080:*" />
</bindings>
バインディングは3つの部分で構成されています。まず、IPアドレスまたはリスト、またはこの場合のようにワイルドカード。 2番目にポート番号、3番目にホスト名、リスト、またはワイルドカード(Host
ヘッダーによるフィルタリング用)。開発目的では、おそらく一意のポートを使用するため、ワイルドカードが最適です。
2非ローカルホストバインディングを使用しているため、追加の権限が必要です。 VSを管理者として実行することもできますが、必要に応じて RL ACLを追加 する必要があります。以下の例では、すべてのユーザーに許可が与えられていますが、独自のユーザー名を使用することもできます。
注:urlacl
はバインディングと完全に一致する必要があります。したがって、http://*:8080
のurlacl
は、*:8080:*
のバインディングを許可しますが、後者が前者のサブセットであっても、*:8080:localhost
のバインディングは許可しません。 これは、ワイルドカードを使用する代わりに、applicationhost.config
にHostヘッダーをリストする場合、それぞれに対応するurlacl
を追加する必要があることを意味します。
外部トラフィック用にHTTP.sysを構成する手順は、予約ポートを使用するようにサイトをセットアップするのと似ています。 Windows 7またはWindows Vistaで、管理者特権のコマンドプロンプトから次のコマンドを実行します。
netsh http add urlacl url=http://*:8080/ user=DOMAIN\username
Windows XPでは、管理者特権のコマンドプロンプトから次のコマンドを実行します。
httpcfg set urlacl /u http://*:8080/ /a D:(A;;GX;;;WD)
注2VSを管理者として実行するか、ACLエントリを追加しても問題が解決しない場合は、コマンドラインからIIS Expressを実行しますバインディング登録エラーメッセージがあるかどうかを確認します。コマンドラインから開始するには、次のコマンドを入力します。
iisexpress.exe /site:"your-site-name"
3最後に、適切なファイアウォールエントリが必要になります。このためには、「セキュリティが強化されたWindowsファイアウォール」コンソールを使用するのが最も簡単です。
[受信ルール]で[新しいルール...]を選択します。
40000-65534
などの範囲を追加できますが、これは安全性が低いことに注意してください)。私もこの問題に何時間も費やし、Android Xoomからwin7開発マシンをブラウズしようとしたので、作成した新しいasp.net Webアプリをテストできました。私がしたことは、IISExpressのapplicationhost.configを、新しいサイトのPC HostNameからPCの現在のIPアドレスに変更することだけでした。
<binding protocol="http" bindingInformation="*:80:dev-Lee" />
に
<binding protocol="http" bindingInformation="*:80:192.168.1.102" />
これを実行してIISExpressを再起動したら... dev-Leeマシンを参照して、Xoomからアプリを確認できました!
IIS Expressのapplicationhost.configを編集して、複数のバインディングアドレスを追加できます。
<bindings>
<binding protocol="http" bindingInformation="*:62217:localhost" />
<binding protocol="http" bindingInformation="*:62217:192.168.0.5" />
<binding protocol="http" bindingInformation="*:62218:192.168.0.5" />
</bindings>
これで、IPアドレスを使用してLANからWebサイトにアクセスできます。
Visual Studio 2013 SP1以降(2015)には、「サーバー設定をすべてのユーザーに適用する(プロジェクトファイルに保存する)」という設定が含まれています。これはデフォルトで有効になっています。有効にすると、Visual StudioはIIS Expressを起動し、別の構成ファイルを使用するコマンドライン引数を指定します。 「applicationhost.config」ファイルの場所は、「。vs\config」のプロジェクトディレクトリの下です。
これを可能にするConveyorという無料のVS(2012、2013、2015)拡張機能を作成しました。VSの[ツール]-> [拡張機能...]メニューまたはギャラリーサイト https:// visualstudiogallery。 msdn.Microsoft.com/a429dbb7-a982-4541-b401-934375c02c0f?SRC=Home
Visual Studioを使用している場合は、次の手順に従ってIPアドレス経由でIIS-Expressにアクセスします。
ipconfig
in Windows Command Line<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"/>
手がかりは、Visual Studioが独自のapplicationHost.configファイルを得たことです!
Visual Studio 2012からこれを機能させるのに苦労しました。404エラーから503エラーになりました。最終的に私のために働いたのは、IIS Express構成の関連する構成をすべて消去することでした...
"\Program Files (x86)\IIS Express\appcmd.exe" list site
"\Program Files (x86)\IIS Express\appcmd.exe" delete site xxx
"\Program Files (x86)\IIS Express\appcmd.exe" delete site yyy
次に、VSのWebプロジェクトのプロパティページから新しい仮想ディレクトリを作成しましたが、仮想ディレクトリを作成する前にホスト名を http:// myhost:80 / に変更してから、仮想ディレクトリの作成をクリックしますボタン。以前は、ホスト名が「localhost」でなければならないというエラーが表示されていましたが、今回はそうではありませんでした。そしてその後、うまくいきました。
要するに、最初に既存の構成をクリアして、もう一度開始します。