當需要在用戶端建構 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 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