2013-06-05 4 views
1

У меня есть проект консоли, библиотеки и сервиса. Проект библиотеки загружает файлы в папку и сохраняет текст в переменных.Почему моя служба Windows не может получить доступ к папке с файлами в них?

Затем консольный проект будет управлять этими переменными. Я могу успешно запустить проект консоли, и он загружает файлы без проблем. Файлы установлены в «Копировать всегда» в DLL и указаны как «Содержимое для действия по созданию».

Когда я пытаюсь запустить тот же самый код в сервисе.

File.ReadAllText(@"MyFolder\SomeFile.txt"); 

Это генерирует следующее исключение.

The type initializer for 'MyLibrary.Data.ReadFiles' threw an exception. 

Я использую тип проекта установки для создания установщика. После установки службы папка MyFolder существует в папке приложения службы, а также в файлах. Что еще может быть причиной моей проблемы, когда служба не может прочитать эти файлы?

EDIT 1

public class ReadFiles { 
    public static string DataFile = File.ReadAllText(@"MyFolder\SomeFile.txt"); 
} 

ответ

1

Учетная запись службы, которые вы используете службу Windows, под землей, не имеет права на чтение с того места, вы пытаетесь получить доступ. Ошибка, которую вы видите, связана с тем фактом, что код, который вы показывали, вероятно существует в конструкции типа ReadFiles.

+0

Учетная запись службы «ЛОКАЛЬНАЯ СИСТЕМА». Как разрешить ему читать эту папку? Системе предоставляется все содержимое папки, а также файлы. – meanbunny

+0

Я определенно согласен, просто пытаюсь найти решение. – meanbunny

+0

@meanbunny, если вы работаете как 'LOCAL SYSTEM', тогда вы просто бросаете исключение в конструктор' ReadFiles'. Отправьте этот код, или вы даже сможете его увидеть, и проверьте средство просмотра событий для необработанного исключения .NET, которое почти наверняка существует. –

Смежные вопросы