#c# #owin
#c# #owin
Вопрос:
В консольном приложении вы можете запустить owin-хост следующим образом:
string url = "http://localhost:8080";
using (WebApp.Start(url))
{
Console.WriteLine("Server running on {0}", url);
Console.ReadLine();
}
Строка
Console.ReadLine();
останавливает остановку сервера. Как мне запустить сервер внутри класса и остановить его остановку? Стал бы я это делать?
public bool keepHosting;
public void Start()
{
using (WebApp.Start(serverUrl))
{
while (keepHosting)
{
}
}
}
Комментарии:
1. Не слишком уверен, что вы пытаетесь сделать — что вызовет это (например, запуск приложения)? Все, что может что-то запустить, вероятно, также должно иметь возможность остановить это, что невозможно выше. Вероятно, вам нужно вызвать «Start» в точке входа в приложение в целом и вместо этого сохранить эту часть.
2. Изменен код, чтобы быть немного понятнее. Я просто не знаю, как поддерживать процесс хостинга.
3.
while
Цикл сConsole.ReadLine();
чем-то, что я обычно делаю сам. Не понимаю, почему это не сработает для вас.4. Процесс хостинга будет оставаться активным, пока ваше приложение работает. Итак, в консольном приложении он активен, потому что строка чтения ожидает ввода (поэтому программа все еще работает). Если вы хотите запустить веб-приложение, но не управлять им в этом классе, вам, вероятно, потребуется сохранить результат метода WebApp.Start и реализовать шаблон IDisposable для вызова dispose для этого, когда ваш класс будет удален. Это будет зависеть от вызывающего абонента, чтобы сохранить себя в живых.
5. общедоступный идентификатор Start() { возвращает WebApp.Start(ServerURL); }
Ответ №1:
Я думаю, вы могли бы это сделать.
public IDisposable Start()
{
return WebApp.Start(serverUrl);
}