WebClient не может загрузить файл при запуске как локальная система - PullRequest
0 голосов
/ 16 марта 2012

У меня есть служба Windows, работающая в качестве локальной системы по умолчанию (в Windows Server 2008 R2), которая пытается извлечь PDF-файл из предоставленного пользователем URL-адреса. Если этот URL находится в локальной интрасети, это счастливый конец. Если URL указывает на более удаленный URL (скажем, от irs.gov), я получаю исключение:

System.Net.WebException: невозможно подключиться к удаленному серверу ---> System.Net.Sockets.SocketException: попытка подключения не удалась, поскольку подключенная сторона не ответила должным образом через определенный период времени или не удалось установить соединение потому что подключенный хост не смог ответить ...

Если я изменю учетную запись «Вход в систему» ​​с локальной системы на мою учетную запись (например), запрос будет выполнен. Но я не хочу запускать службу Windows как реальный пользователь (я слишком консервативен?).

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

string destinationFileName = ...;
Uri uri = ...;
using (var wc = new WebClient()) {
    wc.DownloadFile(uri.AbsoluteUri, destinationFileName );
}

Нужно ли мне получить какие-то настройки IE и добавить их в экземпляр WebClient? Если так, то что?

Спасибо за любые подсказки или указатели!

Ответы [ 2 ]

1 голос
/ 16 марта 2012

Попробуйте запустить свой сервис с NT AUTHORITY \ NETWORK SERVICE. Если это не помогает, создайте учетную запись пользователя с соответствующими правами и запустите службу с этой учетной записью.

Кроме того, если вы работаете в Windows Server 2008 R2, обратите внимание на тему Управляемые учетные записи в Technet.

0 голосов
/ 16 марта 2012

LocalSystem не имеет доступа к сетевым ресурсам.Используйте NETWORK SERVICE учетную запись.

РЕДАКТИРОВАТЬ: Локальная система, скорее всего, не имеет разрешения на запись в путь файловой системы, которую вы используете.

...