我有一個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客戶端的實例?如果是這樣,什麼?
感謝您的任何提示或指針!
聽起來像我的代理服務器沒有設置... Netsh? – 2012-03-15 20:26:49
我認爲代理服務器已設置。如果我在winhttp環境中使用netsh並詢問「show proxy」,我會得到預期的設置。本地系統是否保留單獨的設置?如果是這樣,我該如何指定該用戶? – Russ 2012-03-15 20:46:17
本地系統將計算機帳戶憑據傳遞給網絡資源。如果您的公司代理使用Windows身份驗證,則系統管理員可能允許用戶訪問,但不允許計算機訪問。 – 2012-03-15 20:54:18