2012-05-30 170 views
0

背景:我們有一個服務安裝在已經開始無法調用外部Web服務的遠程站點上。據現場的網絡\支持工程師沒有代理應該是必需的,但試圖執行的WebRequest返回一個異常時:WebRequest.Proxy - 什麼是默認值

System.Net.WebException: The remote server returned an error: (407) Proxy Authentication Required. 

唯一的例外是相對不言自明的,但看代碼,沒有代理在對WebRequest的調用中指定,並且沒有代理在app.config文件中定義。

參照MSDN文檔WebRequest.Proxy:「該IWebProxy對象,以便代理請求的默認值是通過調用GlobalProxySelection.Select屬性設置」

,然後提到了GlobalProxySelection.Select的文檔:

「獲取或設置全局HTTP代理。」

並且GlobalProxySelection.Select沒有在應用程序的任何位置設置,默認值來自哪裏?還有其他全局配置文件可以設置全局HTTP代理嗎?

回答

0

您必須手動設置代理。如果您想使用默認系統代理,則可以通過執行以下操作來完成此操作。 (在Windows Internet設置)

myRequest.Proxy = WebRequest.GetSystemWebProxy();

你所得到的錯誤,因爲您的網絡阻止訪問到服務器上,無需使用代理服務器。

+0

但關鍵是我根本不想使用代理。但是由於某種原因,它似乎默認爲代理服務器,我無法找到它嘗試使用代理服務器的位置或原因。 – mutex

+0

檢查您的Windows網絡設置,或者如果您在辦公網絡上,請諮詢您的系統管理員。你所有的互聯網連接都通過代理嗎? – lahsrah

+0

系統管理員說有一個規則,以便對這個特定的Web服務的調用不需要代理;事實上,如果我關閉IE中的代理並瀏覽到Web服務,它會按預期加載。在C#服務中,在代碼中沒有設置代理,在app.config中沒有設置代理,在machine.config中沒有設置代理。所以我很困惑,爲什麼它試圖使用代理。 – mutex

0

儘管這並不直接解決您的問題,我可以建議嘗試在<system.net>在你的app.config/web.config中一個<defaultProxy />元素與useDefaultCredentials="true" - 這很可能讓你的應用程序認證通過代理,因此不要求特殊的旁路規則。

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <system.net> 
    <defaultProxy useDefaultCredentials="true" /> 
    </system.net> 
</configuration>