[ASP.NET Web API] 使用 Self-Host 掛載 Web API 1

當需要在用戶端建構 REST API,目標只能是.NET Framework 4 時,我們可以選擇 Web API 1,搭配 Self-Host 自我掛載在 Console App,再加上 Topshelf 就可以輕易的把 Console App 變成 Windows Service。

這篇沒有太多的 Web API 的建立方式,主要是筆記一下 Self Host 的使用方式。

開發環境

  • VS 2019
  • .NET Framework 4.0

 

實作步驟

安裝套件

Install-Package Microsoft.AspNet.WebApi.SelfHost -Version 4.0.30506.0

 

建立 ApiController

public class ProductController : ApiController
{
    private readonly Product[] products =
    {
        new Product {Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1},
        new Product {Id = 2, Name = "Yo-yo", Category       = "Toys", Price      = 3.75M},
        new Product {Id = 3, Name = "Hammer", Category      = "Hardware", Price  = 16.99M}
    };
 
    [HttpGet]
    public IEnumerable<Product> GetAllProducts()
    {
        return this.products;
    }
 
    [HttpGet]
    public Product GetProductById(int id)
    {
        var product = this.products.FirstOrDefault(p => p.Id == id);
        if (product == null)
        {
            throw new HttpResponseException(HttpStatusCode.NotFound);
        }
 
        return product;
    }
 
    [HttpGet]
    public IEnumerable<Product> GetProductsByCategory(string category)
    {
        return this.products.Where(p => string.Equals(p.Category, category,
                                                      StringComparison.OrdinalIgnoreCase));
    }
}

 

HttpSelfHostServer 掛載 Web API

internal class Program
{
    private static void Main(string[] args)
    {
        var config = new HttpSelfHostConfiguration("http://localhost:9527");
 
        config.Routes.MapHttpRoute(
                                   "API Default", "api/{controller}/{id}",
                                   new {id = RouteParameter.Optional});
 
        using (var server = new HttpSelfHostServer(config))
        {
            server.OpenAsync().Wait();
            Console.WriteLine("Press Enter to quit.");
            Console.ReadLine();
        }
    }
}

 

Web Api 2 建議使用 OWIN Self-Host,https://docs.microsoft.com/zh-tw/aspnet/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api

 

運行,噴錯了

這個一樣是 URL 保留區的問題,請參考以下方式解決該問題

URL 保留區

https://dotblogs.com.tw/yc421206/2020/01/30/via_nancy_create_rest_api#%E7%B6%81%E5%AE%9A%20URL

 

延伸閱讀

自我裝載 ASP.NET Web API 1 (C#)

為 ASP.NET 4.0 Web Forms 專案加入 Web API

[C#][ASP.NET] 如何在 .NET Framework 4.0 加入 Web Api

 

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo