一. 简单说明
开篇就介绍过WebApi和MVC相比,其中优势之一就是WebApi可以不依赖于IIS部署,可以自托管,当然这里指的是 .Net FrameWork 下的 WebApi 和 MVC 相比较,在.Net Core下,当然就另行别论。
下面我们重点介绍的就是WebApi基于控制台程序进行部署。
1. 安装程序集
通过Nuget添加程序集:Microsoft.AspNet.WebApi 和 System.Web.Http.SelfHost。
2. 新建一个WebApi的控制器,里面有一个CheckLogin的Get方法。
代码如下:
1 public class ForthController : ApiController2 {3 //Get http://localhost:1234/api/Forth/CheckLogin?userName=admin&pwd=1234564 [HttpGet]5 public string CheckLogin(string userName, string pwd)6 {7 if (userName == "admin" && pwd == "123456")8 {9 return "ok";
10 }
11 else
12 {
13 return "error";
14 }
15 }
16 }
3. 编写部署代码
包括端口设定,路由规则的配置,启动和关闭,代码如下:
1 class Program2 {3 static void Main(string[] args)4 {5 try6 {7 var config = new HttpSelfHostConfiguration("http://localhost:1234");8 config.Routes.MapHttpRoute(name: "DefaultApi",9 routeTemplate: "api/{controller}/{action}/{id}",
10 defaults: new { id = RouteParameter.Optional });
11 using (var sever = new HttpSelfHostServer(config))
12 {
13 sever.OpenAsync().Wait();
14 Console.WriteLine("服务已经成功启动");
15 Console.WriteLine("输入任意字符关闭");
16 Console.Read();
17 sever.CloseAsync().Wait();
18
19 }
20 }
21 catch (Exception ex)
22 {
23 Console.WriteLine(ex.Message);
24 }
25 Console.ReadKey();
26 }
27 }
特别注意:不能直接在VS里启动,会报权限不够的错误,正确的使用放在,在Bin文件里,找到Exe程序,以管理员的身份启动即可。
4. 启动exe程序,然后用PostMan进行测试:http://localhost:1234/api/Forth/CheckLogin?userName=admin&pwd=123456,正常访问,结果如下: