第六节:WebApi的部署方式(自托管)

一. 简单说明

   开篇就介绍过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 : ApiController
 2     {
 3         //Get http://localhost:1234/api/Forth/CheckLogin?userName=admin&pwd=123456
 4         [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 Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             try
 6             {
 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,正常访问,结果如下:

发布了567 篇原创文章 · 获赞 52 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/sinolover/article/details/104329087