共用方式為


使用 OWIN 自我裝載 ASP.NET Web API

本教學課程示範如何在主控台應用程式中裝載 ASP.NET Web API,使用 OWIN 自我裝載 Web API 架構。

Open Web Interface for .NET (OWIN) 定義了 .NET Web 伺服器和 Web 應用程式之間的抽象層。 OWIN 可將 Web 應用程式與伺服器解耦,這使得 OWIN 成為在您自己的程序中自我裝載網頁應用程式的理想選擇,而無需依賴 IIS。

教學課程中使用的軟體版本

注意

您可以在 github.com/aspnet/samples 找到本教學課程的完整原始碼。

建立主控台應用程式

在「檔案」功能表上,選擇「新增」,然後選擇「專案」。 從「已安裝」中的「Visual C#」下,選擇「Windows 桌面」,然後選擇「主控台應用程式 (.Net Framework)」。 將項目命名為「OwinSelfhostSample」並選擇「確定」。

「建立新專案」對話方塊的螢幕擷取畫面,顯示了從下拉式清單中選擇 Windows 桌面然後主控台應用程式的功能表選項。

新增 Web API 和 OWIN 套件

從「工具」功能表中,選擇「NuGet 套件管理員」,然後選擇「套件管理員主控台」。 在「套件管理員主控台」視窗中,輸入以下命令:

Install-Package Microsoft.AspNet.WebApi.OwinSelfHost

這將安裝 WebAPI OWIN 自我裝載套件和所有必要的 OWIN 套件。

套件管理員主控台的螢幕擷取畫面,顯示授權資訊,最後接著 P M >,指示輸入命令的位置。

設定 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"]

主控台的螢幕擷取畫面,顯示應用程式運行時的狀態代碼和資訊。

其他資源

Katana 專案概觀

將 ASP.NET Web API 裝載在 Azure 背景工作角色中