自终止自托管WebAPI

本文关键字:WebAPI 终止 | 更新日期: 2023-09-27 18:21:32

我有一个控制台应用程序,它自托管ASP.Net WebAPI。我希望控制台应用程序根据对WebAPI的特定调用自行终止。

控制台应用程序主要基于此处的示例->http://www.asp.net/web-api/overview/hosting-aspnet-web-api/self-host-a-web-api

提供一些上下文;

控制台应用程序将与Jenkins CI一起使用,以自动化Android应用程序的BDD测试。Jenkins将负责构建、安装和启动一个Android应用程序,然后它将调用这个控制台应用程序。Android应用程序将运行一系列Jasmine BDD测试,通过控制台应用程序/WebAPI自动向Jenkins返回更新。测试完成后,Android应用程序将调用一个特定的WebAPI操作——此时我希望它终止控制台应用程序,以便Jenkins进入下一个构建步骤。

提前谢谢。

自终止自托管WebAPI

只需使用ManualResetEvent。在Program类中,添加一个静态公共字段:

public static System.Threading.ManualResetEvent shutDown =
       new ManualResetEvent(false);

然后在你的主要方法:

config.Routes.MapHttpRoute(
    "API Default", "api/{controller}/{id}", 
    new { id = RouteParameter.Optional });
using (HttpSelfHostServer server = new HttpSelfHostServer(config))
{
    server.OpenAsync().Wait();
    //Console.WriteLine("Press Enter to quit.");
    //Console.ReadLine();
    shutDown.WaitOne();
}

然后在适当的API方法:

Program.shutDown.Set();

当主方法退出时,程序将停止。

要关闭正常的.Net应用程序,可以使用:

System.Environment.Exit(0)

请参阅MSDN