码迷,mamicode.com
首页 > Windows程序 > 详细

使用OWIN托管ASP.NET Web API 2

时间:2015-11-15 06:08:13      阅读:754      评论:0      收藏:0      [点我收藏+]

标签:

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替代方案。

 

使用OWIN托管ASP.NET Web API 2

标签:

原文地址:http://www.cnblogs.com/wukaixian/p/4966035.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!