Отличие запуска Topshelf и Console Application

Рейтинг: 0Ответов: 0Опубликовано: 29.05.2023

Есть программа-служба, написанная с помощью 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("Служба для разбора писем электронной почты бухгалтерии от банков, почты и прочего.");
});

Код запуска. Имя пользователя для запуска выбирал из списка уже после установки службы в её настройках.

Ответы

Ответов пока нет.