Windowsのサービスとして実行されているASP.NET Core アプリケーションに外部からアクセスできるようにする

Windowsのサービスとして実行されているASP.NET Core アプリケーションに外部からアクセスできるようにする手順を紹介します。

概要

こちらの記事では、 ASP.NET 6アプリケーションをWindowsのサービスとして実行する手順を紹介しました。 Windowsのサービスとして実行でき、ローカルマシンからWebブラウザでアプリケーションが動作することは確認できましたが、 外部からアクセスした場合には、まだアクセスできない状態です。
この記事では、サービスとして実行されているASP.NET Coreアプリケーションに外部からアクセスできるようにする手順を紹介します。

手順:アプリケーションのエンドポイントの設定

サービスとしてASP.NET Coreアプリケーションを実行した場合、Kestrel Webサーバーとして動作します。 Kestrel Webサーバーに他のホストからアクセスできるよう設定します。 アクセス可能なURLをASP.NET Core アプリケーションに設定します。 今回の例では、こちらの記事で実装した ASP.NET Coreアプリケーションの appsettings.jsonファイルを変更します。

Kestrel Webサーバーに外部からアクセス可能にする設定の詳細については こちらの記事も参照してください。
appsettings.json
{
  "Kestrel": {
    "Endpoints": {
      "Http": {
        "Url": "http://*:5000"
      },
      "Https": {
        "Url": "https://*:5001"
      }
    }
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*"
}
または、
appsettings.json
{
  "urls": "http://*:5000;https://*:5001",
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*"
}

解説

下記コードが追加部分です。URLに*を設定し、このホストに対するアクセスすべてを受け付ける設定とします。
  "Kestrel": {
    "Endpoints": {
      "Http": {
        "Url": "http://*:5000"
      },
    }
  },

変更後プロジェクトをビルド、発行し実行ファイルをマシンに配置します。

手順:ファイアーウォールの設定

コントロールパネルの[Windows Defender ファイアウォール]の設定画面を開きます。 左側の[Windows Defender ファイアウォールを介したアプリまたは機能を許可]の項目をクリックします。


下図の[許可されたアプリ]設定画面が表示されます。画面右下の[別のアプリの許可]ボタンをクリックします。


下図の[アプリの追加]ダイアログが表示されます。[パス]欄の右側の[参照]ボタンをクリックします。ファイル選択ダイアログが表示されますので、 配置したASP.NET Coreアプリケーションを選択します。


ファイルが選択されると[アプリ]の欄に追加されます。選択後ダイアログ下部の [追加] ボタンをクリックします。


[許可されたアプリ]の画面に戻ると、追加したアプリケーションの項目が追加されています。項目の右側の[プライベート][パブリック]のチェックボックスをクリックし チェックをつけます。チェックされたアプリケーションの通信はファイアーウォールを通過できるようになります。

動作確認

別のマシンから、http://(対象マシンのIPアドレス):5000/ のURLにアクセスします。下図のページが表示されます。 サービスとして実行されているASP.NET Coreアプリケーションにアクセスできました。


著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2023-03-06
作成日: 2022-07-08
iPentec all rights reserverd.