2017-01-25 5 views
0

У меня есть простое приложение WebApi2, которое обрабатывает различные запросы REST. Это, по сути, интерфейс для различных операций CRUD в базе данных SQL Server. До сих пор я никогда не запускал его из-за пределов Visual Studio, хотя я обычно не занимаюсь Windows, но я здесь.Запуск приложения WebApi из приложения Windows

Моя цель состоит в том, чтобы встроить эту функциональность Webapp в приложение Windows Desktop (или, по крайней мере, иметь возможность управлять webapp из программы Windows), в основном, чтобы пользователь мог запустить Webapp, остановить его, посмотреть, кто подключается к он и т. д., но я не знаю, как подключиться к этому конкретному набору точек. На самом деле это довольно сложно для Google.

В разделе WebApp также должны быть указаны некоторые вещи при запуске (только строки, поэтому, если ответ (ы) включает выполнение различных системных командных строк, чтобы сообщить WebApp о запуске/остановке/etc, и я могу передать то, что я нужно как-то в командной строке, это прекрасно).

В конечном счете, цель состоит в том, чтобы передать пользователю программу установки, и он не должен знать, что есть веб-сервер, если он действительно этого не хочет.

Так как же я мог бы выполнить эту часть? (Если этот вопрос слишком расплывчатый, скажите мне, почему, и я его поправлю по мере необходимости).

ответ

0

Одной из хороших особенностей веб-API является возможность размещения за пределами веб-сервера, такого как IIS. Например, вы можете разместить его в своем приложении Windows Forms. Вот как это сделать: article with detailed instructions.

Вы бы Startup класс, который будет использоваться для самозагрузки:

public class Startup 
{ 
    // This code configures Web API. The Startup class is specified as a type 
    // parameter in the WebApp.Start method. 
    public void Configuration(IAppBuilder appBuilder) 
    { 
     // Configure Web API for self-host. 
     HttpConfiguration config = new HttpConfiguration(); 
     config.Routes.MapHttpRoute( 
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 

     appBuilder.UseWebApi(config); 
    } 
} 

, а затем его просто вопрос запуска слушателя:

using (WebApp.Start<Startup>("http://localhost:8080")) 
{ 
    Console.WriteLine("Web Server is running."); 
    Console.WriteLine("Press any key to quit."); 
    Console.ReadLine(); 
} 

Это будет предоставлять веб-API на порт 8080, и ваше приложение может отправлять HTTP-запросы на него.

Так что в основном ключевые слова, которые вы ищете: self hosting asp.net web api.

Смежные вопросы