zoukankan      html  css  js  c++  java
  • ASP.NET WebApi自宿主模式

    咱们在使用ASP.NET WebApi的时候一般习惯创建一个Web应用程序,最终程序将发布到IIS进行运行,近期公司有个需求需要在Windows服务中使用WebApi进行http监听响应,于是搜索了部分资料后整理如下,这里演示使用控制台应用程序。首先需要从Nuget引用相关类库:

    <packages>
      <package id="Microsoft.AspNet.WebApi.Client" version="4.0.20710.0" targetFramework="net40" />
      <package id="Microsoft.AspNet.WebApi.Core" version="4.0.20710.0" targetFramework="net40" />
      <package id="Microsoft.AspNet.WebApi.SelfHost" version="4.0.30506.0" targetFramework="net40" />
      <package id="Microsoft.Net.Http" version="2.0.20710.0" targetFramework="net40" />
      <package id="Newtonsoft.Json" version="4.5.6" targetFramework="net40" />
    </packages>

    注意我使用的是.net framework 4.0,所以Microsoft.AspNet.WebApi.SelfHost的版本是4.x。

    然后就是C#代码如下:

    class Program
    {
        static void Main(string[] args)
        {
            var config = new HttpSelfHostConfiguration("http://localhost:9100");
            config.Routes.MapHttpRoute(
                "API Default", "api/{controller}/{id}",
                new { id = RouteParameter.Optional, namespaceName = "BDCDataAR.HeNanOneWinAccept.API" });
            config.Routes.MapHttpRoute(
                "API action", "api/{controller}/{action}/{id}",
                new { id = RouteParameter.Optional, namespaceName = "BDCDataAR.HeNanOneWinAccept.API" });
            var server = new HttpSelfHostServer(config);
            server.OpenAsync().Wait();
            Console.WriteLine("http监听成功");
            Console.ReadKey();
        }
    }

    然后我们创建一个Api控制器如下:

    public class StudentController : ApiController
    {
        [HttpGet]
        public string Get()
        {
            return "hello world";
        }
    
        [HttpPost]
        public string Add(StudentPara para)
        {
            return "success";
        }
    }
    
    public class StudentPara
    {
        public string EncryptData { get; set; }
    }

    当我们通过浏览器请求http://localhost:9100/api/Student的时候,将返回hello world。

    注意:Add方法是post请求,默认接收数据的最大长度为65536字节数,超过这个字节数将报413错误,为了解决该问题,需要对config进行设置,设置如下:

    config.MaxReceivedMessageSize = 1024 * 1024;//表示1M

  • 相关阅读:
    思路不够清晰
    深思不够
    [Android学习笔记]理解焦点处理原理的相关记录
    移动端自动化测试(二)之 Appium常用的API(python)函数介绍
    移动端自动化测试(一)之 Appium+Pyhton环境准备篇
    如何修改上线网站
    sublime如何自动保存
    自动化元素定位
    OC 字典 存储联系人信息 求大神优化代码
    我的第一个字典-Dictionary
  • 原文地址:https://www.cnblogs.com/duanjt/p/14394376.html
Copyright © 2011-2022 走看看