Отличие запуска Topshelf и Console Application
Есть программа-служба, написанная с помощью Topshelf
. В ней происходит открытие файлов Excel с помощью Microsoft.Office.Interop.Excel
. При запуске программы как консольного приложения всё работает хорошо, но при установке службы и запуске как службы происходит ошибка при попытке открытия файла excel. Запуск службы происходит от имени профиля, под которым и выполнялся запуск консольного приложения.
Application application = new Application();
Workbook workbook = application.Workbooks.Open(path); //здесь срабатывает Exception
Получаю такую ошибку: System.Runtime.InteropServices.COMException : Нет доступа к файлу 'd:\\Programs\\AccountingEmailHandler\\post\\Приложение к ППИ.xls'. Это может быть вызвано одной из следующих причин. Имени файла или пути не существует. Файл используется другой программой. Имя книги, которую вы пытаетесь сохранить, совпадает с именем открытой в данный момент книги.
Может есть какая-то разница в двух способах запуска?
HostFactory.Run(factory =>
{
factory.UseAutofacContainer(container);
factory.Service<EmailService>(service =>
{
service.ConstructUsingAutofacContainer();
service.WhenStarted(eksana => eksana.Start());
service.WhenStopped(eksana => eksana.Stop());
});
factory.RunAsLocalSystem();
factory.SetServiceName("AccountingEmailHandler");
factory.SetDisplayName("Accounting Email Handler");
factory.SetDescription("Служба для разбора писем электронной почты бухгалтерии от банков, почты и прочего.");
});
Код запуска. Имя пользователя для запуска выбирал из списка уже после установки службы в её настройках.