Используя Selenium в ASP.NET Core MVC 2.1, у меня есть класс, который был введен DI.Он создает экземпляр FirefoxDriver
, который завершается (закрывает окно браузера и завершает процесс), когда базовое приложение ASP.NET Core завершается.
public class FFManager:IDisposable {
RemoteWebDriver driver;
public FFManager () {
driver = new FirefoxDriver();
}
public void Dispose() {
driver.CloseDriver();
}
}
In Startup.ConfigureServices
services.AddSingleton<FFManager>(x => new FFManager());
Не работает
Как видите, я реализовал интерфейс IDisposable
.Окно Firefox все еще открыто после завершения процесса.Другая идея заключалась в использовании события applicationLifetime.ApplicationStopping
в Startup.Configure
let manager = app.ApplicationServices.GetService<FFManager>();
manager.Dispose();
Тот же результат.Во втором подходе событие определенно срабатывает (точка останова / тестирование вывода консоли), и процесс закрытия приложения ASP.NET Core немного медленнее.Но Firefox все еще открыт после выхода из приложения.Зачем?
Когда я меняю время жизни службы на область действия, экземпляр Firefox закрывается после запроса.Но это должно происходить после выхода из приложения, а не после каждого запроса.Я не получаю никаких ошибок, приложение закрывается плавно.