OWIN 自宿主模式WebApi项目,WebApi层作为单独类库供OWIN调用

本文介绍了如何使用OWIN自宿主模式创建一个WebApi项目,将WebApi层作为单独的类库供OWIN调用。在OWIN.WebApi.Srv层的AppStart.cs中配置了地址和跨域设置,通过RESTful风格的WebApi控制器接口进行交互。成功运行后,可以继续进行后续开发。
摘要由CSDN通过智能技术生成

为什么我们需要OWIN

过去,IIS作为.NET开发者来说是最常用的Web Server(没有之一),源于微软产品的紧耦合关系,我们不得不将Website、Web Application、Web API等部署在IIS上,事实上在2010年前并没有什么不妥,但随着近些年来Web的发展,特别是移动互联网飞速发展,IIS作为Web Server已经暴露出他的不足了。主要体现在两个方面,ASP.NET (System.Web)紧耦合IIS,IIS紧耦合OS,这就意味着,我们的Web Framework必须部署在微软的操作系统上,难以跨平台。
...
OWIN是什么?在本文里面就不进行赘述,网上有很多介绍OWIN的信息以及优缺点的博文,这里可以给几个链接大家进行自行参考:
..
下面我们重点介绍我在搭建OWIN自宿主平台的过程,对于我是学习的过程,对于想要接触他的大家来说,也是一种帮助。
很多人搭建的OWIN+WebApi项目都是写在一个项目中的,我个人为了代码的隔离,将控制器层写在了另外一个项目中,这样有助于后期大型框架的形成。
下面是搭建步骤:
1、首先新建一个控制台应用程序和一个.NETFramework类库项目,控制台引用类库项目。
项目结构如下图所示:

OWIN.WebApi WebApi层

OWIN.WebApi.Sv WebApi服务层,将要作为启动项!

2、控制台项目使用NuGet引用需要的类库:
  OWIN
  Microsoft.Owin.Hosting
  Microsoft.Owin.Host.HttpListener
  Microsoct.AspNet.WebApi.Owin
  这里需要手动从WebApi项目里面找到System.Web.Web,System.Net.Http等Web类库进行引用。
  OWIN.WebApi.Srv层的引用情况(我这里有跨域配置,不需要的请忽略)
  
  在OWIN.WebApi层,我们需要同样引用Web的类库,我们才可以在WebApi项目控制器层继承自ApiController
    OWIN.WebApi层的引用情况(我这里有跨域配置,不需要的请忽略)
  
 3、因为WebApi层要分开类库项目写,所以这里比一般的OWIN要多一些配置,在我项目的OWIN.WebApi层的config目录下,我新建了一个Global.cs类,里面的代码是对控制器的解析,代码展示如下:
复制代码
  1 using System.Web.Http;
  2 using System.Web.Http.Dispatcher;
  3 using System;
  4 using System.Collections.Concurrent;
  5 using System.Collections.Generic;
  6 using System.Linq;
  7 using System.Net;
  8 using System.Net.Http;
  9 using System.Web.Http.Controllers;
 10 
 11 namespace OWIN.WebApi.config
 12 {
 13     public class WebApiApplication : System.Web.HttpApplication
 14     {
 15         protected void Application_Start()
 16         {
 17             //ignore the xml return it`s setting let json return only 
 18             GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
 19             GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);
 20 
 21             GlobalConfiguration.Configuration.Services.Replace(typeof(IHttpControllerSelector),
 22             new WebApiControllerSelector(GlobalConfiguration.Configuration));
 23         }
 24     }
 25     /// <summary>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值