4

我有一个自托管 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 进入下一个构建步骤。

提前致谢。

4

2 回答 2

8

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

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

于 2013-07-09T07:47:32.183 回答
0

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

System.Environment.Exit(0)

MSDN

于 2013-07-09T07:51:26.843 回答