zoukankan      html  css  js  c++  java
  • Use OWIN to Self-Host ASP.NET Web API 2

     
    Open Web Interface for .NET (OWIN)在Web服务器和Web应用程序之间建立一个抽象层。OWIN将网页应用程序从网页服务器分离出来,然后将应用程序托管于OWIN的程序而离开IIS之外。
     
     
    Use OWIN to Self-Host ASP.NET Web API 2
     

    This tutorial shows how to host ASP.NET Web API in a console application, using OWIN to self-host the Web API framework.

    Open Web Interface for .NET (OWIN) defines an abstraction between .NET web servers and web applications. OWIN decouples the web application from the server, which makes OWIN ideal for self-hosting a web application in your own process, outside of IIS.

    Software versions used in the tutorial

    You can find the complete source code for this tutorial at aspnet.codeplex.com.

    Create a Console Application

    On the File menu, click New, then click Project. From Installed Templates, under Visual C#, click Windows and then click Console Application. Name the project “OwinSelfhostSample” and click OK.

    Add the Web API and OWIN Packages

    From the Tools menu, click Library Package Manager, then click Package Manager Console. In the Package Manager Console window, enter the following command:

    Install-Package Microsoft.AspNet.WebApi.OwinSelfHost

    This will install the WebAPI OWIN selfhost package and all the required OWIN packages.

    Configure Web API for Self-Host

    In Solution Explorer, right click the project and select Add / Class to add a new class. Name the class Startup.

    Replace all of the boilerplate code in this file with the following:

    using Owin; 
    using System.Web.Http; 
    
    namespace OwinSelfhostSample 
    { 
        public class Startup 
        { 
            // This code configures Web API. The Startup class is specified as a type
            // parameter in the WebApp.Start method.
            public void Configuration(IAppBuilder appBuilder) 
            { 
                // Configure Web API for self-host. 
                HttpConfiguration config = new HttpConfiguration(); 
                config.Routes.MapHttpRoute( 
                    name: "DefaultApi", 
                    routeTemplate: "api/{controller}/{id}", 
                    defaults: new { id = RouteParameter.Optional } 
                ); 
    
                appBuilder.UseWebApi(config); 
            } 
        } 
    }

    Add a Web API Controller

    Next, add a Web API controller class. In Solution Explorer, right click the project and select Add / Class to add a new class. Name the classValuesController.

    Replace all of the boilerplate code in this file with the following:

    using System.Collections.Generic;
    using System.Web.Http;
    
    namespace OwinSelfhostSample 
    { 
        public class ValuesController : ApiController 
        { 
            // GET api/values 
            public IEnumerable<string> Get() 
            { 
                return new string[] { "value1", "value2" }; 
            } 
    
            // GET api/values/5 
            public string Get(int id) 
            { 
                return "value"; 
            } 
    
            // POST api/values 
            public void Post([FromBody]string value) 
            { 
            } 
    
            // PUT api/values/5 
            public void Put(int id, [FromBody]string value) 
            { 
            } 
    
            // DELETE api/values/5 
            public void Delete(int id) 
            { 
            } 
        } 
    }

    Start the OWIN Host and Make a Request Using HttpClient

    Replace all of the boilerplate code in the Program.cs file with the following:

    using Microsoft.Owin.Hosting;
    using System;
    using System.Net.Http;
    
    namespace OwinSelfhostSample 
    { 
        public class Program 
        { 
            static void Main() 
            { 
                string baseAddress = "http://localhost:9000/"; 
    
                // Start OWIN host 
                using (WebApp.Start<Startup>(url: baseAddress)) 
                { 
                    // Create HttpCient and make a request to api/values 
                    HttpClient client = new HttpClient(); 
    
                    var response = client.GetAsync(baseAddress + "api/values").Result; 
    
                    Console.WriteLine(response); 
                    Console.WriteLine(response.Content.ReadAsStringAsync().Result); 
                } 
    
                Console.ReadLine(); 
            } 
        } 
     }

    Running the Application

    To run the application, press F5 in Visual Studio. The output should look like the following:

    StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.StreamContent, Headers: 
    { 
      Date: Tue, 09 Jul 2013 18:10:15 GMT 
      Server: Microsoft-HTTPAPI/2.0 
      Content-Length: 19 
      Content-Type: application/json; charset=utf-8 
    } 
    ["value1","value2"]

    Additional Resources

    An Overview of Project Katana

    Host ASP.NET Web API in an Azure Worker Role

    This article was originally created on July 9, 2013

    Author Information

    Kanchan Mehrotra

    Kanchan Mehrotra

  • 相关阅读:
    Jmeter 常用函数(20)- 详解 __counter
    Jmeter 常用函数(19)- 详解 __BeanShell
    Python 简明教程 --- 26,Python 多进程编程
    Python 简明教程 --- 25,Python 目录操作
    Python 简明教程 --- 24,Python 文件读写
    Zookeeper分布式过程协同技术
    设计模式之命令模式案例详解
    设计模式之模板方法模式
    设计模式之代理模式案例详解
    设计模式之享元模式
  • 原文地址:https://www.cnblogs.com/micro-chen/p/5819316.html
Copyright © 2011-2022 走看看