如何从Owin WebApp停止WebApi项目

时间:2016-08-17 14:18:26

标签: asp.net-web-api owin self-hosting

我有一个名为MyWebApi项目的WebApi,它在调试模式下在端口42000上运行。 我使用以下技术使用Owin创建了一个控制台应用程序来托管MyWebApi:

 static void Main(string[] args)
 {            
    using (WebApp.Start<WebApi.Startup>("http://localhost:9000/"))
    {
        Console.WriteLine("Server is running...");
        Console.WriteLine("Press Enter key to stop it.");
        Console.ReadKey();
    }

    Console.WriteLine("Server is shutting down...");
}

一切正常。我可以从端口9000和42000获取和发布数据。 在我停止我的控制台后,我仍然可以从端口42000发布并获取数据。 有没有办法阻止MyWebApi,就像我们直接从WepApi项目停止调试一样?

感谢,

奥斯汀

2 个答案:

答案 0 :(得分:1)

尝试处理您的webApp:

 using (var _webApp=WebApp.Start<WebApi.Startup>("http://localhost:9000/"))
{
    Console.WriteLine("Server is running...");
    Console.WriteLine("Press Enter key to stop it.");
    Console.ReadKey();
    _webApp.Dispose();// Add this
}

Console.WriteLine("Server is shutting down...");

答案 1 :(得分:0)

 public class Startup
    {
        private static readonly IUnityContainer _container = UnityHelpers.GetConfiguredContainer();

        public static void StartServer()
        {
            string baseAddress = "http://localhost:8081/";
            var startup = _container.Resolve<Startup>();
            IDisposable webApplication = WebApp.Start(baseAddress, startup.Configuration);

            try
            {
                Console.WriteLine("Started...");

                Console.ReadKey();
            }
            finally
            {
                webApplication.Dispose();
            }
        }        
    }

SELF HOST WEBAPI WITH OWIN AND UNITY

webApplication.Dispose(); - 停止webapi服务器