2
1

More than 1 year has passed since last update.

ひな形を使わずASP.Net Coreを使ったWebサーバーを構築する。

Posted at

概要

クラスライブラリやコンソールアプリ内にWebサーバーを立てたい場合に、ASP.Net Coreを使えるようにする手順です。

手順

ASP.Net Coreフレームワークの参照

サーバーを立てたいプロジェクトのcsprojを編集して、フレームワークの参照を追加します。

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>
+ <ItemGroup>
+	<FrameworkReference Include="Microsoft.AspNetCore.App" />
+ </ItemGroup>

</Project>

Controllerの準備

今回呼び出したいAPIを記述したControllerクラスを用意

TestController.cs
using Microsoft.AspNetCore.Mvc;

namespace ConsoleApp1
{
    [ApiController]
    [Route("[controller]/[action]")]
    public class TestController
    {
        [HttpGet]
        public string GetMessage()
        {
            return "Hello World";
        }
    }
}

Webサーバーの立ち上げプログラムを記述

ひな形を使わないときは、なぜかAPIとコントローラの紐づけがうまくいかないため、
Controllerを記述したプロジェクトを明示的に指定する必要がありました。

Program.cs
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;

var builder = WebApplication.CreateBuilder(args);

// Controllerを記述したプロジェクトを明示的に指定
var assembly = AppDomain.CurrentDomain.GetAssemblies()
    .ToList()
    .First(x => x.GetName().Name == "ConsoleApp1");

builder.Services
    .AddControllers()
    .AddApplicationPart(assembly);

var app = builder.Build();

app.UseAuthorization();

app.MapControllers();

app.Run();

構成ファイルの準備

ASP.Net Core特有のappsettings.jsonという名前の構成ファイルを準備します。
Visual Studioでjsonファイルを追加します。
プロパティから、ビルドアクションを「コンテンツ」に変更し、コピー動作を「常にコピー」にしておきます。

構成内容を記述します。

appsettings.json
{
    "AllowedHosts": "*",
    "Kestrel": {
        "Endpoints": {
            "Http": {
                "Url": "http://localhost:1234"
            }
        }
    }
}

動作確認

デバッグ実行したら、ブラウザでAPIにアクセス。
http://localhost:1234/Test/GetMessage
「Hello World」の文字が表示されることを確認します。

最終的なプロジェクト構成です。

image.png

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1