標籤:
從今天開始,研究ASP.NET Web Api(以下有時會簡稱Web Api)。我會寫一個實踐系列專題,不一定成理論體系,只是遇到問題或心得,記下來。爭取用一段較長的時間對ASP.NET Web Api有個較深入的理解。這裡我是使用VS2013整合式開發環境,如果版本不夠,可以用NuGet去下載Web Api相關dll。
今天討論自我寄宿Web Api。
Web Api繼承了WCF的優點,除了常規的Web寄宿(IIS)外,還可以在NET的控制台、WinForms等程式中寄宿。這裡講一講在控制台中寄宿Web Api。
一、編寫Api方法
建立C#類庫項目MyControllers,引用System.Web.Http.dll。
編寫Api類檔案MyValuesController.cs:
using System.Web.Http;namespace MyControllers{ public class MyValuesController : ApiController { public string Get() { return "OK"; } }} 二、添加寄宿項目
添加一個控制台項目MyConsoleApiSvr,引用MyControllers項目,同時引用以下4個Web Api相關DLL:
- System.Net.Http.dll
- System.Web.Http.dll
- System.Net.Formatting.Http.dll
- System.Web.Http.SelfHost.dll
主程式如下:
1 using System; 2 using System.IO; 3 using System.Web.Http; 4 using System.Web.Http.SelfHost; 5 using System.Reflection; 6 7 namespace MyConsoleApiSvr 8 { 9 class Program10 {11 static void Main(string[] args)12 {13 Console.Title = "Api Service";14 15 var apiDll = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "MyControllers.dll");16 Assembly.LoadFrom(apiDll);17 var config = new HttpSelfHostConfiguration("http://localhost:4588");18 config.Routes.MapHttpRoute(19 name: "DefaultApi",20 routeTemplate: "api/{controller}/{id}",21 defaults: new {id = RouteParameter.Optional});22 using (var svr = new HttpSelfHostServer(config))23 {24 svr.OpenAsync().Wait();25 Console.WriteLine("API服務已開啟!");26 Console.ReadLine();27 }28 29 }30 }31 }
以上代碼可以分為幾個步驟:
- 載入包含Api控制器方法的DLL。(第16行)
- 添加服務配置,並指定服務寄宿地址。(第17行)
- 添加全域預設路由配置。(第18-21行)
- 定義並開啟服務。(第22、24行)
三、運行服務並測試
運行Web Api服務:
並在瀏覽器中測試:
ASP.NET Web Api 實踐系列(一)自我寄宿