IIS Express のWebサイトに他のホストからアクセスできるようにする - ASP.NETアプリケーションのデバッグ時に他のホストからのアクセスをする

ASP.NETアプリケーションのデバッグ時に他のホストからのアクセスをしたい場合があります。この記事では、IIS Expressのサイトに外部のホストからアクセスできるようにする手順を紹介します。

applicationhost.config の修正

IIS Expressの設定ファイル"applicationhost.config"を変更します。
"applicationhost.config"ファイルはカレントユーザーのドキュメントフォルダ内の"IISExpress/config"ディレクトリに設置されています。
デフォルトのままであれば
c:\ユーザー\(ユーザー名)\ドキュメント\IISExpress\config
ディレクトリ内に設置されています。(下図参照)


"applicationhost.config"ファイルをエディタ等で開きます。かなりサイズが大きいことがわかります。


外部に公開したいプロジェクトのサイトのsiteセクションを変更します。ファイルのサイズが大きいため、プロジェクト名などで、ファイル内を検索し場所を見つけると良いです。
siteセクション内のbindingsセクションのbindingタグを追加します。追加したbindingタグのbindingInformationに自分のホストのIPアドレスを記述しIPアドレスでバインディングする設定を追加します。

修正前

<site name="(ASP.NETプロジェクト名など)" id="89">
  <application path="/" applicationPool="Clr4IntegratedAppPool">
  <virtualDirectory path="/" physicalPath="(プロジェクトファイルのあるパス)" />
  </application>
  <bindings>
    <binding protocol="http" bindingInformation="*:54125:localhost" />
  </bindings>
</site>

修正後

<site name="(ASP.NETプロジェクト名など)" id="89">
  <application path="/" applicationPool="Clr4IntegratedAppPool">
  <virtualDirectory path="/" physicalPath="(プロジェクトファイルのあるパス)" />
  </application>
  <bindings>
    <binding protocol="http" bindingInformation="*:54125:localhost" />
    <binding protocol="http" bindingInformation="*:54125:192.168.64.143" />
  </bindings>
</site>
 <binding protocol="http" bindingInformation="*:54125:192.168.64.143" />
の部分は
 <binding protocol="http" bindingInformation="*:54125:(このホスト/マシンのIPアドレス)" />
となります。
修正ができたら、"applicationhost.config"ファイルを上書き保存します。

ACL(Access Control List)の設定

続いてアクセスコントロールの設定をします。
スタートメニューなどから"コマンドプロンプト(管理者)"を起動します。


管理者モードのコマンドプロンプトを表示します。


以下のコマンドを実行します。
netsh http add urlacl url=http://IPアドレスorホスト名:ポート番号/ user=everyone

先ほどの設定ファイルのケースでは以下のコマンドになります。
netsh http add urlacl url=http://192.168.64.143:54125/ user=everyone


正常に実行されると下図のメッセージ(「URL 予約を正常に追加しました」)が表示されます。

削除する場合

デバッグ等の利用が終わり削除する場合は以下のコマンドを実行します。
netsh http delete urlacl url=http://IPアドレスorホスト名:ポート番号/

先ほどの設定ファイルのケースでは以下のコマンドになります。
netsh http delete urlacl url=http://192.168.64.143:54125/


正常に実行されると下図のメッセージ(URL 予約を正常に削除しました。)が表示されます。

ファイアウォールのポート解放

続いて、ファイアウォールのポートを開放します。

コントロールパネルを表示します。


システムとセキュリティのセクションをクリックします。下図の画面が表示されますので[Windows ファイアウォール]を選択します。


Windows ファイアウォールの設定画面が表示されます。左側のメニューの[詳細設定]をクリックします。


[セキュリティが強化された Windows ファイアウォール]のウィンドウが表示されます。


左側のツリービューから[受信の規則]をクリックします。下図の画面に切り替わります。右側の操作エリアの[新しい規則...]をクリックします。


[新規の受信の規則ウィザード]ダイアログが表示されます。


種類を[ポート]に設定します。[次へ]ボタンをクリックします。


プロトコルは"TCP"を選択します。ポートは"特定のローカルポート"を選択します。ポート番号にはポート解放する番号を入力します。先にapplicationhost.config ファイルやACLの設定で指定したポート番号になります。入力が完了したら[次へ]ボタンをクリックします。


操作を設定します。指定したポートを開放するため、[接続を許可する]を選択します。


プロファイルはデフォルトのまま(すべてチェックされた状態)にします。


この規則の名前を設定します。


今回は"Test"としました。[完了]ボタンを押し受信の規則を作成します。


受信の規則が追加されました。受信の規則一覧の一番上に"Test"が追加されていることが確認できます。

動作確認

ASP.NETプロジェクトを実行します。IIS Expressが起動し、プロジェクトの実行結果が表示されます。


URLがlocalhostとなっているところをIPアドレスに変更します。変更後のURLでもページが表示されることを確認します。


他のホストから、IPアドレスベースのURLで接続します。ページが表示されることが確認できました。


以上で設定は完了です。
著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。
最終更新日: 2016-02-04
作成日: 2014-05-10
iPentec all rights reserverd.