我有一个自动托管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进入下一个构建步骤。
提前致谢。
答案 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)