本教學課程示範如何在主控台應用程式中裝載 ASP.NET Web API,使用 OWIN 自我裝載 Web API 架構。
Open Web Interface for .NET (OWIN) 定義了 .NET Web 伺服器和 Web 應用程式之間的抽象層。 OWIN 可將 Web 應用程式與伺服器解耦,這使得 OWIN 成為在您自己的程序中自我裝載網頁應用程式的理想選擇,而無需依賴 IIS。
教學課程中使用的軟體版本
- Visual Studio 2017
- Web API 5.2.7
注意
您可以在 github.com/aspnet/samples 找到本教學課程的完整原始碼。
建立主控台應用程式
在「檔案」功能表上,選擇「新增」,然後選擇「專案」。 從「已安裝」中的「Visual C#」下,選擇「Windows 桌面」,然後選擇「主控台應用程式 (.Net Framework)」。 將項目命名為「OwinSelfhostSample」並選擇「確定」。
新增 Web API 和 OWIN 套件
從「工具」功能表中,選擇「NuGet 套件管理員」,然後選擇「套件管理員主控台」。 在「套件管理員主控台」視窗中,輸入以下命令:
Install-Package Microsoft.AspNet.WebApi.OwinSelfHost
這將安裝 WebAPI OWIN 自我裝載套件和所有必要的 OWIN 套件。
設定 Web API 以自我裝載
在「方案總管」中,以滑鼠右鍵按一下該專案並選擇「新增 / 類別」以新增類別。 將類別命名為 Startup
。
將此文件中的所有樣板程式碼替換為以下內容:
using Owin;
using System.Web.Http;
namespace OwinSelfhostSample
{
public class Startup
{
// This code configures Web API. The Startup class is specified as a type
// parameter in the WebApp.Start method.
public void Configuration(IAppBuilder appBuilder)
{
// Configure Web API for self-host.
HttpConfiguration config = new HttpConfiguration();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
appBuilder.UseWebApi(config);
}
}
}
新增 Web API 控制器
接下來,新增一個 Web API 控制器類別。 在「方案總管」中,以滑鼠右鍵按一下該專案並選擇「新增 / 類別」以新增類別。 將類別命名為 ValuesController
。
將此文件中的所有樣板程式碼替換為以下內容:
using System.Collections.Generic;
using System.Web.Http;
namespace OwinSelfhostSample
{
public class ValuesController : ApiController
{
// GET api/values
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/values/5
public string Get(int id)
{
return "value";
}
// POST api/values
public void Post([FromBody]string value)
{
}
// PUT api/values/5
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/values/5
public void Delete(int id)
{
}
}
}
啟動 OWIN Host 並使用 HttpClient 發出請求
將 Program.cs 檔案中的所有樣板程式碼替換為以下內容:
using Microsoft.Owin.Hosting;
using System;
using System.Net.Http;
namespace OwinSelfhostSample
{
public class Program
{
static void Main()
{
string baseAddress = "http://localhost:9000/";
// Start OWIN host
using (WebApp.Start<Startup>(url: baseAddress))
{
// Create HttpClient and make a request to api/values
HttpClient client = new HttpClient();
var response = client.GetAsync(baseAddress + "api/values").Result;
Console.WriteLine(response);
Console.WriteLine(response.Content.ReadAsStringAsync().Result);
Console.ReadLine();
}
}
}
}
執行應用程式
若要執行應用程式,請在 Visual Studio 中按 F5。 輸出看起來應該如下所示:
StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
Date: Tue, 09 Jul 2013 18:10:15 GMT
Server: Microsoft-HTTPAPI/2.0
Content-Length: 19
Content-Type: application/json; charset=utf-8
}
["value1","value2"]