使用OWIN托管ASP.NET Web API 2

OWIN全称是Open Web Interface for .NET,是针对.NET平台的开放Web接口。

有了OWIN,就可以让ASP.NET 脱离IIS,不用再去关心Web服务器的事情,这一点在ASP.NET Web API测试中特别方便,当然除了使用OWIN托管,还可以使用内存托管。

那么怎么使用OWIN托管?

 

0.新建ASP.NET Web API 2项目

ASP.NEt Web API 2出现这么久,除了旧项目,相信不会有人还使用第一版本了吧。我曾经尝试过在老项目添加OWIN托管,特别麻烦各种程序集不兼容,到最后也没成功。所以,不知道OWIN是不是不支持第一版本的API还是别的原因,如果要使用OWIN,建议升级到新版本的API再说。

因为使用OWIN主要是方便单元测试,所是新建项目的时候把”添加单元测试“勾上。

 

1.添加OWIN引用和Startup.cs启动文件

用nuget添加owin的引用(IAppBuilder在这里):

PM>Install-Package Owin

然后在项目添加Startup.cs:

using System.Web.Http;
using Owin;

namespace OwinHost
{
    public class Startup
    {
        public void Configuration(IAppBuilder appBuilder)
        {
            var config=new HttpConfiguration();
            WebApiConfig.Register(config);

            appBuilder.UseWebApi(config);
        }
    }
}

接着再用nuget添加 Microsoft.AspNet.WebApi.Owin(UseWebApi扩展方法在这里)

PM>Install-Package Microsoft.AspNet.WebApi.Owin

使用nuget添加引用时,如果依赖的程序集版本不兼容,nuget会一并更新引用。
到这里,API项目添加OWIN已经完成,下面开始在单元测试中启动它。

 

2.在单元测试中启用项目

启动OWIN托管前,还要在测试项目引入Microsoft.Owin.Hosting(WebApp.Start方法在这里)和Microsoft.Owin.Host.HttpListener

PM> Install-Package Microsoft.Owin.Hosting
PM> Install-Package Microsoft.Owin.Host.HttpListener

 

引用完后添加启动测试代码

namespace OwinHost.Tests
{
    [TestClass]
    public class OwinHostStartTests:IDisposable
    {
        private const string HostAddress = "http://localhost:9000";
        private static IDisposable _webApp;
        private static HttpClient _client;
public OwinHostStartTests() { _webApp = WebApp.Start<Startup>(HostAddress); _client=new HttpClient(); _client.BaseAddress=new Uri(HostAddress); } [TestMethod] public void StartTest() { var response = _client.GetAsync("api/values").Result; Assert.AreEqual(HttpStatusCode.OK,response.StatusCode); Assert.AreEqual("value1",response.Content.ReadAsAsync<List<string>>().Result.ElementAt(0)); } public void Dispose() { _webApp.Dispose(); } } }


结果是顺利通过了

就这么简单的几步,很方便地添加了OWIN托管,极大的方便了测试,完全实现了一键运行测试,不用关心IIS。

 

3.可能遇到的问题

使用过程中,有可能会有某些程序集依赖版本不兼容问题,直接用nuget升级程序包就好了。

 

4.小结

添加OWIN托管不会对项目有任何副作用,更不会影响IIS部署,所以尽管放心服用。当然OWIN也直接托管ASP.NET也是没问题的,现在已经有非常完善的组件支持了,可以作为IIS替代方案。

 

转载于:https://www.cnblogs.com/wukaixian/p/4966035.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值