博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用OWIN托管ASP.NET Web API 2
阅读量:4970 次
发布时间:2019-06-12

本文共 2281 字,大约阅读时间需要 7 分钟。

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.HostingPM> 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
(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
>().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

你可能感兴趣的文章
C#修改上传文件的大小
查看>>
序列化和反序列化
查看>>
c#返回值的理解
查看>>
敏捷宣言
查看>>
valgrind 详细说明
查看>>
SqlServer扩展存储过程
查看>>
Dev Express Report 学习总结(七)Dev Express Reports 常见知识点总结
查看>>
新整理mongo3.2用户创建的基本使用
查看>>
IE6 fixed问题
查看>>
Dart Flutter
查看>>
[iOS开发]WKWebView加载JS
查看>>
冒泡、交换、选择排序
查看>>
Android 4.x 获取存储卡路径的方式
查看>>
install usb serial
查看>>
面向对象课程第四次博客总结
查看>>
magento jQuery冲突N种方法
查看>>
Oracle体系结构之数据文件管理
查看>>
linux dd命令详解及使用案例场景
查看>>
spring和struts整合
查看>>
js基础总结
查看>>