从今天开始,研究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。
新建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:
主程序如下:
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 }
以上代码可以分为几个步骤:
运行Web Api服务:
并在浏览器中测试:
新闻热点
疑难解答