Без дополнительной информации никто не сможет помочь. Каким именно образом он не функционирует? Вы получаете исключение? Это просто молча терпит неудачу?
Просто пара советов ...
1) Не используйте конкатенацию строк для создания путей к файлам. Вместо этого используйте System.IO.Path.Combine
. Как это:
TextWriter textWriter = new StreamWriter(
System.IO.Path.Combine(Constants.APP_PATH, filename), true);
2) Заключите вашего писателя в блок using()
. Вот так:
using(TextWriter textWriter = new StreamWriter(
System.IO.Path.Combine(Constants.APP_PATH, filename), true))
{
textWriter.WriteLine(log.ToString());
}
3) Убедитесь, что учетная запись, которую использует служба, имеет доступ для создания / перезаписи файлов в этом каталоге. Часто служебные учетные записи, такие как LOCAL_SYSTEM
или NETWORK_SERVICE
, не будут иметь таких же разрешений, как учетные записи пользователей. Это может объяснить, почему он работает как пользователь, а не как сервис. Также может быть, что ваша константа APP_PATH указывает на что-то специфическое для пользователя, например, отображение диска на общий сетевой ресурс. Сопоставления дисков не охватывают пользователей, поэтому это также может быть проблемой.