2015-12-12 2 views
3

Я пытаюсь разобраться в горячем состоянии, чтобы перезапустить приложение MVC6. У меня есть этот фрагмент кода, который останавливает его, но он ошибается.Restart asp.net MVC 6 Application

private readonly IApplicationShutdown applicationShutdown; 
public AdminController(IApplicationShutdown applicationShutdown) 
{ 
    this.applicationShutdown = applicationShutdown; 
} 

public IActionResult RestartApplication() 
{ 
    this.applicationShutdown.RequestShutdown(); 
} 

Приведено данное сообщение.

InvalidOperationException: Не удается разрешить службу для типа 'Microsoft.Extensions.PlatformAbstractions.IApplicationShutdown' ...

ответ

3

Новый интерфейс IApplicationShutdown заменяет устаревший IApplicationLifetime интерфейс (см: Proof link).

Используйте метод IApplicationLifetime.StopApplication() для прекращения подачи заявки.

private readonly IApplicationLifetime applicationLifetime; 
public AdminController(IApplicationLifetime applicationLifetime) 
{ 
    this.applicationLifetime = applicationLifetime; 
} 

public IActionResult RestartApplication() 
{ 
    this.applicationLifetime.StopApplication(); 
} 

Но имейте в виду, что после завершения работы приложения вы должны снова запустить процесс подачи заявки.

+1

50% ответил ... Это работает, чтобы остановить приложение, но как его можно перезапустить программным путем? –

+0

Позвольте мне дать немного больше фона. Я хочу поменять местами (и поменять их обратно) в миниатюрную папку просмотра на лету. Я полагаю, что могу реализовать собственный механизм просмотра Razor, чтобы сделать это, но как только приложение запущено, кажется, что путь кэширован где-то. Я считаю, перезапуск приложения позволит мне выполнить это, но это может быть идиотским способом сделать это ... –

+0

О процессе reastart после завершения - вам нужна оболочка вокруг dnx.exe, которая будет перезагружаться. Я не знаю об этом. –