自终止自托管WebAPI

时间:2013-07-09 07:40:40

标签: c# asp.net-web-api console-application

我有一个自动托管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 App将调用特定的WebAPI操作 - 此时我希望它终止控制台应用程序,以便Jenkins进入下一个构建步骤。

提前致谢。

2 个答案:

答案 0 :(得分:7)

只需使用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();

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

答案 1 :(得分:0)

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

System.Environment.Exit(0)

请参阅MSDN