FileSystemWatcher не работает при работе в качестве службы Windows в .NET 8C#

Место общения программистов C#
Ответить
Anonymous
 FileSystemWatcher не работает при работе в качестве службы Windows в .NET 8

Сообщение Anonymous »

У меня есть приложение, которое хорошо работает как приложение строки cmd, но при запуске в качестве службы FileSystemWatcher перестает работать.
Я проверил, что служба работает доступ к файлам, поскольку они используют те же файлы в другом месте службы.
My BackgroundService настраивается следующим образом:

Код: Выделить всё

public class Worker : BackgroundService
{
private readonly ILogger _logger;
private FileSystemWatcher _watcher, _watcher2;

public Worker(ILogger logger)
{
_logger = logger;
}

public override async Task StartAsync(CancellationToken cancellationToken)
{
await base.StartAsync(cancellationToken);
}

public override async Task StopAsync(CancellationToken cancellationToken)
{
await base.StopAsync(cancellationToken);
}

protected override Task ExecuteAsync(CancellationToken stoppingToken)
{
SetupFileSystemWatchers();
return Task.CompletedTask;
}
}
Вот как настроены мои FileSystemWatcher:

Код: Выделить всё

    private void SetupFileSystemWatchers()
{
try
{
_watcher = new FileSystemWatcher
{
Path = @"\\10.10.1.10\files$\1\2\3\",
IncludeSubdirectories = true,
NotifyFilter = NotifyFilters.DirectoryName | NotifyFilters.FileName
};
_watcher.Created += async (sender, e) =>
{
_logger.LogInformation("Created");
await FileWatcherFileChanged(sender, e);
};
_watcher.EnableRaisingEvents = true;

_watcher2 = new FileSystemWatcher
{
Path = @"\\10.10.1.10\files$\1\2\4\",
IncludeSubdirectories = true,
NotifyFilter = NotifyFilters.DirectoryName | NotifyFilters.FileName
};

_watcher2.Created += async (sender, e) =>
{
_logger.LogInformation("Created");
await FileWatcherFileChanged(sender, e);
};
_watcher2.EnableRaisingEvents = true;

_logger.LogInformation("Watchers set up successfully.");
}
catch (Exception ex)
{
_logger.LogError(ex, "Error setting up file system watchers.");
}
}

private async Task FileWatcherFileChanged(object source, FileSystemEventArgs e)
{
await _manage.RepoChanged(e.FullPath);
}
}
У меня есть трассировки по всему коду, чтобы понять, что происходит, и кажется, что все инициализируется правильно, но тогда событие просто не запускается при запуске как служба. Тот же самый код запускается как консольное приложение на том же сервере и работает отлично.

Подробнее здесь: https://stackoverflow.com/questions/786 ... e-in-net-8
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»