2012-03-15 64 views
0

我有一個Windows服務作爲默認的本地系統(在Windows Server 2008 R2上)運行,它試圖從用戶提供的URL中下載PDF。如果該URL位於本地Intranet中,則會有一個滿意的結局。如果URL指向更遠的URL(例如irs.gov),我會得到一個例外:作爲本地系統運行時,WebClient無法下載文件

System.Net.WebException:無法連接到遠程服務器---> System.Net.Sockets .SocketException:連接嘗試失敗,因爲連接方在一段時間後沒有正確響應,或建立的連接失敗,因爲連接的主機未能響應...

如果我更改「登錄爲」從本地系統帳戶(例如),我的帳戶,請求通過。但我不願意以真實用戶的身份運行Windows服務(我是否過於保守?)。

我正在使用的代碼看起來很簡單:

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

我需要得到某種形式的IE設置,並將它們添加到Web客戶端的實例?如果是這樣,什麼?

感謝您的任何提示或指針!

+0

聽起來像我的代理服務器沒有設置... Netsh? – 2012-03-15 20:26:49

+0

我認爲代理服務器已設置。如果我在winhttp環境中使用netsh並詢問「show proxy」,我會得到預期的設置。本地系統是否保留單獨的設置?如果是這樣,我該如何指定該用戶? – Russ 2012-03-15 20:46:17

+0

本地系統將計算機帳戶憑據傳遞給網絡資源。如果您的公司代理使用Windows身份驗證,則系統管理員可能允許用戶訪問,但不允許計算機訪問。 – 2012-03-15 20:54:18

回答

1

嘗試使用NT AUTHORITY \ NETWORK SERVICE運行您的服務。如果這不起作用,請創建一個具有適當受限權限的用戶帳戶,並使用該帳戶運行您的服務。

此外,如果您在Windows Server 2008 R2上運行,請給Technet上的Managed Service Accounts主題看看。

0

LocalSystem無權訪問網絡資源。使用 NETWORK SERVICE帳戶。

編輯: 本地系統很可能沒有您正在使用的文件系統路徑的寫入權限。

+0

說誰? http://msdn.microsoft.com/en-us/library/windows/desktop/ms684190(v=vs.85).aspx – 2012-03-15 20:42:56

+0

它有匿名訪問;它只是不能認證爲機器 – 2012-03-15 21:08:59

+0

是的,我現在看到了。在嘗試訪問網絡共享時,我遇到過這種情況。思想跳到無法訪問..但它沒有認證的網絡共享。我的錯。 – 2012-03-15 21:10:19

相關問題