IIS Express で localhost 以外からアクセスする方法
Visual Studio 2012 で ASP.NET MVC 開発したとき、デバッグのためにリモートホストからアクセスする必要があったので、やり方を調べました。
検索用キーワード:IIS Express 外部からアクセス リモートアクセス 外部公開 他のPCからアクセス
背景
Visual Studio 2012 で ASP.NET MVC 開発したとき、デフォルトで IIS Express でホスティングしてくれるのですが、URLが http://localhost:xxxxx/ となっていて、IPアドレスでのアクセスをしようとすると蹴られてしまいます。
これを解決するための手順です。
試した環境
やることは以下の3つ。
以下は、IPアドレスが 192.168.1.202 でポート番号が 53280 の場合で説明していきます。自分の環境に合わせて適宜読み替えて下さい。
IIS Express の設定変更
まず、http://192.168.1.202:53280/ というような IPアドレスやホスト名でアクセス出来るように設定を変更する必要があります。
設定ファイルは、マイドキュメントに入ってます。パスで言うと以下です。このファイルをテキストエディタ(とかメモ帳)で開きます。
C:\Users\ユーザ名\Documents\IISExpress\config\applicationhost.config
Visual Studio で一度でも実行していれば、ホスティング設定が自動的に追記されています。
"<sites" で検索するなどして、プロジェクト名やポート番号を見ながら該当の <site>ノードを探します。
こんな感じの記述箇所です。
<site name="HelloWorld1" id="9"> <application path="/" applicationPool="Clr4IntegratedAppPool"> <virtualDirectory path="/" physicalPath="C:\Users\ユーザ名\Documents\Visual Studio 2012\Projects\HelloWorld1\HelloWorld1" /> </application> <bindings> <binding protocol="http" bindingInformation="*:53280:localhost" /> </bindings> </site>
見つかったら、
<site name="HelloWorld1" id="9"> <application path="/" applicationPool="Clr4IntegratedAppPool"> <virtualDirectory path="/" physicalPath="C:\Users\ユーザ名\Documents\Visual Studio 2012\Projects\HelloWorld1\HelloWorld1" /> </application> <bindings> <binding protocol="http" bindingInformation="*:53280:localhost" /> <binding protocol="http" bindingInformation="*:53280:192.168.1.202" /> </bindings> </site>
URL ACL の設定
管理者権限でコマンドプロンプトを開き、以下のコマンドを実行して下さい。
netsh http add urlacl url=http://IPアドレスorホスト名:ポート番号/ user=everyone
なお、XPの場合は、次のようにするそうです。(試してません。注釈の引用元参照のこと)
httpcfg set urlacl /u http://IPアドレスorホスト名:ポート番号/ /a D:(A;;GX;;;WD)
ここまでで、ローカルホスト内から http://192.168.1.201:53280/ としてアクセス出来るようになります。
Visual Studio でデバッグ実行し、ブラウザのURLを手で打ち変えて試してみればわかります。
エラーの場合