Posted at

Visual Studio 2015のIIS Expressにlocalhost以外からアクセスできるようにする方法

More than 3 years have passed since last update.


はじめに

IIS Expressにlocalhost以外からアクセスする方法はググると結構なサイトが引っかかります。

しかしVisual Studio 2015の場合は一部設定が異なっており、調べるのに少し時間がかかったので、行った作業をまとめます。


背景

Visual StudioではデフォルトのホスティングとしてIIS Expressが使用されます。しかし、このIIS Expressでホスティングされた場合、LAN内の他のPCからhttp://[IPアドレス]:[ポート番号]/の形で指定してもアクセスすることが出来ません。

しかし、以下の手順を行うことでLAN内の他のPCから繋ぐことが出来るようになります。


ローカル環境

Windows 10

IIS Express 8.0

Visual Studio Professional 2015


手順

1.IIS Expressの設定を変更する

2.URL Access Control List(以降ACL)の設定を変更する

3.ファイアウォールの設定を変更する


IIS Expressの設定を変更する

まずはIISのapplicationhost.configファイルを編集します。

Visual Studio 2015はそれ以前のVisual Studioとファイルの配置されている場所が異なります。


  • Visual Studio 2015以前

    C:\Users[ユーザ名]\Documents\IISExpress\config\applicationhost.config


  • Visual Studio 2015

    [ソリューションのディレクトリパス]\.vs\config\applicationhost.config


ソリューションを一度でもVisual Studioで実行している場合、applicationhost.configファイルにそのソリューションの情報が追記されているので、ファイルを開いてソリューション名で検索するとname属性がソリューション名のsiteタグが引っ掛かります。

下記はソリューション名の「hogehoge」場合の例です。

            <site name="hogehoge" id="3">

<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="c:\users\[ユーザー名]\documents\visual studio 2015\Projects\hogehoge\hogehoge" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:58147:localhost" />
</bindings>
</site>

siteタグの子要素にあるbindingsタグ内にbindingタグが既にあるので、コピーしてbindingInformation要素の内容を書き換えます。

ポート番号については好きな番号を指定できますが、競合を避けるために49152番~65535番から選択するのが無難です。

下記はIPアドレスが「192.168.1.162」、ポート番号を「55555」とした場合の設定です。

            <site name="hogehoge" id="3">

<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="c:\users\[ユーザー名]\documents\visual studio 2015\Projects\hogehoge\hogehoge" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:58147:localhost" />
<binding protocol="http" bindingInformation="*:55555:192.168.1.162" />
</bindings>
</site>


URL ACLの設定を変更する

対象のポート番号経由でhttp通信出来るようにする為にURL ACLに設定を追加します。

まずは管理者権限でコマンドプロンプトを立ち上げて、以下のコマンドを実行します。

netsh http add urlacl url=http://[IPアドレスまたはホスト名]:[ポート番号]/ user=everyone

今回の例では以下になります。(IPアドレス:192.168.1.162、ポート番号:55555)

netsh http add urlacl url=http://192.168.1.162:55555/ user=everyone

IPアドレスやポート番号は前手順でapplicationhost.configファイル内で指定したものにします。

もしURL ACLの設定を削除したい場合は以下のコマンドを実行します。

netsh http delete urlacl url=http://[IPアドレスまたはホスト名]:[ポート番号]/

ここまでの設定が終われば、Visual Studioでソリューションをデバック実行し、ローカルPCからIPアドレスやホスト名を指定することでアクセスすることができます。


ファイアウォールの設定を変更する

最後にファイアウォールの設定を変更して前手順で指定したポート番号が通るようにします。

ファイアウォールのポート開放は手順をすべて書くと長くなってしまうので、今回は割愛します。「ファイアウォール ポート開放」等でググッてもらえば多くのサイトが引っかかります。

一時的であれば、ファイアウォールを無効にするという手もありますが、自己責任でお願いします。


最後に

設定自体は簡単ですが、Visual Studio 2015では設定ファイルの配置場所が異なるのがネックになります。