asp.net coreのIIS Expressで別の端末から同じネットワーク環境下でアクセスする。
asp.net core で開発する際、同じネットワーク内で別の端末からアクセスしてテストをしたいこともある。特に検証段階においてはサーバーを用意し都度デプロイというのは手間であるため、local 環境で行いたいケースがあるので構築手順についてまとめていく。
通常 ASP.net coer の IIS Express だと localhost でしかアクセスができない。
前提条件:
visual studio は管理者権限で起動しておくこと.
IP アドレスの取得
自身の IP アドレスを確認して取得しておこう。 コマンドプロンプトから以下コマンドで取得できる。
ipconfig
visual studio の設定ファイル編集
まず ASP.net core のプロジェクトには.vs
という隠しフォルダーがあり その中にapplicationhost.config
がありそのファイルを編集する必要がある。 以下の通り取得した IP アドレスでbindingInformation
を追加する。
注意; IP アドレスとポート番号については自身のデフォルトの設定に置き換え編集すること。
修正前
<bindings>
<binding protocol="http" bindingInformation="*:63508:localhost" />
<binding protocol="https" bindingInformation="*:44367:localhost" />
</bindings>
修正後
<bindings>
<binding protocol="http" bindingInformation="*:63508:localhost" />
<binding protocol="http" bindingInformation="*:63508:192.168.0.131" />
<binding protocol="https" bindingInformation="*:44367:localhost" />
<binding protocol="https" bindingInformation="*:44367:192.168.0.131" />
</bindings>
IIS Express の起動設定ファイルの編集
ASP.net core のプロジェクトフォルダ内に\Properties\launchSettings.json
というファイルがあるので こちらを編集する。
注意; IP アドレスとポート番号については自身のデフォルトの設定に置き換え編集すること。
変更前
"iisExpress": {
"applicationUrl": "http://localhost:63508",
"sslPort": 44367
}
変更後
"iisExpress": {
"applicationUrl": "http://192.168.0.131:63508",
"sslPort": 44367
}
URL プレフィックスの予約
外部の端末からアクセスできるように URL プレフィックスの予約する 管理者権限のコマンドプロンプトで URL プレフィックスを予約する。
コマンド
netsh http add urlacl url=http://192.168.0.131:63508/ user=Everyone
netsh http add urlacl url=https://192.168.0.131:44367/ user=Everyone
ファイアウオールルールを追加
管理者権限のコマンドプロンプトでファイアウオールルールを追加する。
コマンド
netsh advfirewall firewall add rule name= "ASP.NET Core WASM App" dir=in action=allow protocol=TCP localport=63508
netsh advfirewall firewall add rule name= "ASP.NET Core WASM App2" dir=in action=allow protocol=TCP localport=44367
注意; IP アドレスとポート番号については自身のデフォルトの設定に置き換え編集すること。
デバッグなどの利用が終わったら
デバッグ等の利用が終ったら 管理者権限のコマンドプロンプトで URL プレフィックスを予約を削除します。
URL プレフィックスの削除
netsh http delete urlacl url=http://192.168.0.131:63508/
netsh http delete urlacl url=http://192.168.0.131:44367/
ファイアウオールルールを削除
管理者権限のコマンドプロンプトでファイアウオールルールを削除
netsh advfirewall firewall delete rule name= "ASP.NET Core WASM App"
netsh advfirewall firewall delete rule name= "ASP.NET Core WASM App2"
終わりに
今回はスマホアプリの API テストをするために PC の仮想モバイルでテストをするために上記のような環境を 構築しました。通常の API であれば localhost で問題なく実行できるのですが、別端末を使用したテストの場合は うまく活用していこうと思います。