猿教程 Logo

Web API部署

在本节中,您将学习如何部署一个Web API应用。

Web API应用可以以两种方式托管:

  1. IIS托管

  2. 自托管


IIS托管

Web API可以托管在IIS中 ,他将与Web应用以同样的方式运行。

你已经在前几节中学会了创建一个Web API应用如您所见,创建一个Web API项目默认情况下是自带ASP.Net MVC的。

所以,当你在IIS中部署了MVC项目,他也将自带了Web API。



自定义托管

你可以将ASP.NET Web API作为单独的进程来运行。这意味着你可以在控制台应用程序或windows服务或者OWIN或任何其他管理的进程中托管Web API。

你需要做以下步骤来实现self-host web API:

  1. 使用HttpConfiguration配置一个Web API

  2. 创建HttpServer并开始监听传入的http请求

让我们看一下如何托管一个简单的Web Api到控制台应用程序。

首先,在Visual Studio 2012(或后一个版本)中创建一个控制台项目。

注意:您必须在管理模式打开Visual Studio。


现在,您需要使用NuGet添加微软的ASP.NET Web API 2。

在解决方案资源管理器窗口中右键单击项目并选择管理NuGet Packges . .


在管理NuGet包窗口中,左侧选择Online,搜索web api。这将列出所有Web API的包。现在,找到Microsoft ASP.NET Web API 2.2 Self Host package包,然后点击安装。


在许可接受窗口点击接受按钮。


这将安装对应的包到您的项目。


现在在程序类的Main()方法编写以下代码。

class Program
{
    static void Main(string[] args)
    {
        var config = new HttpSelfHostConfiguration("http://localhost:1234");
        var server = new HttpSelfHostServer(config, new MyWebAPIMessageHandler());
        var task = server.OpenAsync();
        task.Wait();
        Console.WriteLine("Web API Server has started at http://localhost:1234");
        Console.ReadLine();
    }
}


在上面的代码,首先我们通过传递URI位置创建HttpSelfHostConfiguration类的一个对象。然后,我们创建了一个HttpSelfHostServer对象。然后我们通过调用server.OpenAsync()方法开始侦听传入请求。这将异步监听请求,因此它将返回任务对象。

创建MyWebAPIMessageHandler类并写入以下代码:

class MyWebAPIMessageHandler : HttpMessageHandler
{
    protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
    {
        var task = new Task<HttpResponseMessage>(() => {
            var resMsg = new HttpResponseMessage();
            resMsg.Content = new StringContent("Hello World!");
            return resMsg;
        });
        task.Start();
        return task;
    }
}


因此,您可以创建简单的控制台应用程序来托管Web API,对每一个要求返回“Hello World !”。

使用Ctrl F5运行控制台应用程序。


打开web浏览器,并输入http://localhost:1234 /并看到结果。


你可以在Web API的自定义托管中,使用与Asp.NET相同的路由和Controller功能。

在自我托管控制台应用程序,创建简单的HomeController类如下所示。

public class HomeController : ApiController
{
    public string Get() {
        return "Hello World!";
    }
    public string Get(string name) {
        return "Hello " + name;
    }
}

现在,在Main()方法,配置一个默认的路由对象,如下所示。

static void Main(string[] args)
{
    var config = new HttpSelfHostConfiguration("http://localhost:1234");
    config.Routes.MapHttpRoute("default",
                                "api/{controller}/{id}",
                                new { controller = "Home", id = RouteParameter.Optional });
    var server = new HttpSelfHostServer(config);            
    var task = server.OpenAsync();
    task.Wait();
    Console.WriteLine("Web API Server has started at http://localhost:1234");
    Console.ReadLine();
}

请注意,我们创建了一个HttpSelfHostServer的同时删除了一个MessageHandler对象。

现在,按下Ctrl F5运行控制台应用程序。打开浏览器,输入http://localhost:1234 / api或http://localhost:1234/api?name=steve,结果如下所示。



版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/webapi/web-api-host.html