使用OWIN託管ASP.NET Web API 2

來源:互聯網
上載者:User

標籤:

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<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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.