2012-05-25 4 views
2

Я разработал службы WCF, которая использует net.tcp связывания и читать и WRITE файлы в файловой системе. Когда я начинаю обслуживание окон (в консоли) я получаю следующее сообщение об ошибке, даже если sample.dll находится в папке:Невозможно найти файл сборки «example.dll» при запуске службы Windows

Не удалось найти файл сборки sample.dll

Этот конкретный сервис WCF размещается в службы Windows, который работает на Windows 7 64bit и я следующие вопросы:

Какой аккаунт я должен использовать для моего приложения:

пользователя/NetworkService/LocalSystem/Loca lService

И почему OS не может загрузить DLL, даже если она есть?

Заранее благодарю вас за помощь!

+0

Мое предположение, что ваша проблема заключается в следующем: по умолчанию текущий каталог службы Windows находится в windows/system32. Поэтому попробуйте переместить вашу dll в этот каталог и попытайтесь снова запустить службу. – Reniuz

+0

Благодарим вас за советы, но это не решает проблему. –

+0

Это точное и все сообщение об освобождении? Можете ли вы опубликовать более подробную информацию? – Reniuz

ответ

0

В соответствии с MSDN documentation на ServiceAccount пользователь-пользователь запрашивает имя пользователя и пароль. Я предполагаю, что если вы используете учетную запись пользователя и у нее нет прав на чтение для windows/system32, это приведет к тому, что ваша сборка не будет найдена.

Возможно, измените ServiceAccount на шаг в LocalService?

3

Для dll вы должны добавить следующую строку кода прямо в начале метода OnStart.

System.Environment.CurrentDirectory = System.AppDomain.CurrentDomain.BaseDirectory 

Это должно позволить вашей службе загрузить dll из фактического каталога.

+0

Хороший звонок - спас меня от некоторых страданий! –