WebApi自宿主应用

转载 2013年12月02日 09:45:58

WebApi 自宿主一例,关于Web Api的基础入门和相关概念可以参考

官方入门教程

CodeProject入门例子

 

1. 简介

  WebAPI 托管有两种方式一种是通过IIS,一种就是通过寄宿在其他程序,例如window服务,window应用程序等等,前者主要用于发布和最后调试使用,后者一般多在开发测试环节。

  我们知道WCF服务可以通过System.ServiceModel.ServiceHost来加载和打开服务,那么web api可以通过System.Web.Http.SelfHost.HttpSelfHostServer来加载打开API服务

  在使用System.Web.Http.SelfHost.HttpSelfHostServer来打开服务的时候,需要通过HttpSelfHostConfiguration来配置下主机一些参数(主要是服务地址)

2.实例

 1) 通过VS2012新建一个window form工程,然后通过Nuget获取WebAPI SeltHost库,下载安装后的包:

   

    引用命名空间:

using System.Web.Http;
using System.Web.Http.SelfHost;  

  声明变量:主机服务和配置实例对象 

 

private HttpSelfHostConfiguration _config = null;
private HttpSelfHostServer _serverhost = null;

初始化:

 

_config = new HttpSelfHostConfiguration("http://localhost:5555");

API路由 +打开服务

复制代码
            _config.Routes.MapHttpRoute(
                "API Default",
                "api/{controller}/{username}",
                new { username = RouteParameter.Optional });

            //start 
            _serverhost = new HttpSelfHostServer(_config);
            _serverhost.OpenAsync().Wait();
复制代码

模型类:

复制代码
    public class UserModel {
        [Required]
        [StringLength(16,MinimumLength=4)]
        public string UserName { get; set; }

        [Required]
        [StringLength(16,MinimumLength=4)]
        public string Password { get; set; }

        [Required]
        [RegularExpression(@"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$")]
        public string Email { get; set; }

        [Required]
        [Range(18,36)]
        public int Age { get; set; }

    }
复制代码

 接下来我们需要设计一个测试客户端来验证我们的API

 

2) 新建一个window form工程,依旧是通过NuGet获取WebAPI Client库(用于桌面客户端程序请求API服务)

 声明一个HttpClient对象,并初始化API服务地址

 

private HttpClient _httpCLient = new HttpClient();
_httpCLient.BaseAddress =new Uri( @"http://localhost:5555");

调用

复制代码
        private void GetUsers() {
            HttpResponseMessage responseMsg = _httpCLient.GetAsync("api/user").Result;
            responseMsg.EnsureSuccessStatusCode();
            var users = responseMsg.Content.ReadAsAsync<IEnumerable<UserModel>>().Result;
            string msg = string.Empty;
            foreach (var o in users) {
                msg += string.Format("Name:{0} , Email:{1} , Age:{2}", o.UserName, o.Email, o.Age);
                msg += System.Environment.NewLine;
            }

            MessageBox.Show(msg);
        }
复制代码

 

程序运行效果图:

点击initConfig(配置/打开服务) ---- 》 点击Get( 测api/User,获取所有用户信息)

 

源码下载 ,工程基于VS2012,NET FROMWORK4.5

WebApi系列~自主宿主HttpSelfHost的实现

宿主一词我们不会陌生,它可以看作是一个基础设施,它为一些服务和功能提供最底层的支持,如你的web应用程序可以运行在iis或者apache上,而这两个东西就是web应用程序的宿主,而今天说的自主宿主Se...
  • make1828
  • make1828
  • 2015年11月16日 18:05
  • 4261

使用OWIN 构建自宿主ASP.NET Web API 2

ASP.NET Web API 2拥有符合RESTFUL风格,原生支持HTML协议,解耦IIS和windows server服务器等诸多优秀特性。本文讲述如何使用OWIN构建ASP.NET Web A...
  • fanrong1985
  • fanrong1985
  • 2016年05月10日 12:31
  • 3305

ASP.NET Web API :Web宿主

上一节描述了API的整个运行框架,即分为三层hosting、message handler pipeline 和 controller handling。此节讲其中一个宿主,WebHost 寄宿在as...
  • maddemon
  • maddemon
  • 2014年03月16日 13:53
  • 3018

.NET跨平台实践:Linux .Net Core自宿主应用程序瘦身记

一,.NET Core 自宿主应用程序个头有点大 发布.NET Core应用程序有两个方式,一种是“便携式”,一种是“自宿主式”。便携式发布时,目标程序不带.net core运行环境,所以“个头”很...
  • kof2019
  • kof2019
  • 2017年08月27日 15:25
  • 680

WebApi自宿主应用

WebApi 自宿主一例,关于Web Api的基础入门和相关概念可以参考 官方入门教程 CodeProject入门例子   1. 简介   WebAPI 托管有两种方式一...
  • hefeng_aspnet
  • hefeng_aspnet
  • 2013年12月02日 09:45
  • 1977

WebApi与手机客户端通信安全机制

最近公司有几个项目需要开发手机客户端,服务器端选用WebApi,那么如何保证手机客户端在请求服务器端时数据不被篡改,如何保证一个http请求的失效机制,下面总结一下我们在项目中针对这两个问题的解决方案...
  • zch501157081
  • zch501157081
  • 2016年03月14日 20:21
  • 1499

WCF服务自宿主

WCF服务使用WPF客户端自宿主
  • u010512579
  • u010512579
  • 2015年04月28日 11:23
  • 1156

返璞归真 asp.net mvc (11) - asp.net mvc 4.0 新特性之自宿主 Web API, 在 WebForm 中提供 Web API, 通过 Web API 上传文件, .ne

索引页] [源码下载] 返璞归真 asp.net mvc (11) - asp.net mvc 4.0 新特性之自宿主 Web API, 在 WebForm 中提供 Web API...
  • zjlovety
  • zjlovety
  • 2015年04月17日 16:49
  • 1035

WebAPI 寄宿windowService

webAPI 寄宿windowService服务
  • dulei123321
  • dulei123321
  • 2014年06月03日 10:25
  • 1863

用Web api /Nancy 通过Owin Self Host简易实现一个 Http 服务器

过去做 端游的Http 服务器 用的WebApi 或者Mvc架构,都是放在iis。。。而我已经是懒出一个地步,并不想去配iis,或者去管理iis,所以我很喜欢 Self host 的启动方式。C#做 ...
  • talent_jian
  • talent_jian
  • 2017年02月03日 11:13
  • 2422
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WebApi自宿主应用
举报原因:
原因补充:

(最多只允许输入30个字)