zoukankan      html  css  js  c++  java
  • 第六节: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,正常访问,结果如下:

    !

    • 作       者 : Yaopengfei(姚鹏飞)
    • 博客地址 : http://www.cnblogs.com/yaopengfei/
    • 声     明1 : 本人才疏学浅,用郭德纲的话说“我是一个小学生”,如有错误,欢迎讨论,请勿谩骂^_^。
    • 声     明2 : 原创博客请在转载时保留原文链接或在文章开头加上本人博客地址,否则保留追究法律责任的权利。
     
  • 相关阅读:
    OpenCV在MFC图像控件内显示图像
    Android APK反编译具体解释(附图)
    Android下用Properties保存程序配置
    王灏:光音网络致力打造Wi-Fi大生态圈
    解决ccSvcHst.exe CPU占用超50%的问题,及其缘由
    配置管理工具比較
    应用程序无法正常启动0xc0150002 解决方式
    现有一些开源ESB总线的比較
    使用GridView自带分页的代码
    Hadoop 2.4.0新特性介绍
  • 原文地址:https://www.cnblogs.com/yaopengfei/p/10369584.html
Copyright © 2011-2022 走看看