Dot-Net

我應該如何設置預設代理以使用預設憑據?

  • November 18, 2008

以下程式碼適用於我:

var webProxy = WebProxy.GetDefaultProxy();
webProxy.UseDefaultCredentials = true;
WebRequest.DefaultWebProxy = webProxy;

不幸的是,WebProxy.GetDefaultProxy()已棄用。我還應該做什麼?

(在我的部署中不允許使用 app.config 設置 defaultProxy 設置)

從 .NET 2.0 開始,您不需要這樣做。如果您沒有在 Web 請求上顯式設置 Proxy 屬性,它將使用靜態 WebRequest.DefaultWebProxy 的值。如果要更改所有後續 WebRequest 使用的代理,可以設置此靜態 DefaultWebProxy 屬性。

WebRequest.DefaultWebProxy 的預設行為是使用與 Internet Explorer 相同的基礎設置。

如果您想對目前使用者使用不同的代理設置,那麼您需要編寫程式碼

WebRequest webRequest = WebRequest.Create("http://stackoverflow.com/");
webRequest.Proxy = new WebProxy("http://proxyserver:80/",true);

要麼

WebRequest.DefaultWebProxy = new WebProxy("http://proxyserver:80/",true);

您還應該記住代理的對像模型包括代理可以根據目標主機名而有所不同的概念。在調試和檢查 webRequest.Proxy 的屬性時,這會使事情變得有點混亂。稱呼

webRequest.Proxy.GetProxy(new Uri("http://google.com.au"))查看將使用的代理伺服器的實際詳細資訊。

關於是否可以設置webRequest.ProxyWebRequest.DefaultWebProxy = null阻止使用任何代理似乎存在一些爭論。這對我來說似乎工作正常,但您可以將其設置為new DefaultProxy()不帶參數以獲得所需的行為。要檢查的另一件事是,如果您的應用程序配置文件中存在代理元素,.NET Framework 將不會使用 Internet Explorer 中的代理設置。

MSDN 雜誌文章通過 .NET 中的自動配置減輕使用者的負擔提供了有關幕後發生的事情的更多詳細資訊。

對於那些與 Brian Genisio 不同的是,他們能夠設置應用程序配置文件的內容:- 不要在程式碼中做任何事情。而是將其添加到您的 app.config/web.config。

<system.net>
 <defaultProxy useDefaultCredentials="true" />
</system.net>

真正地,真正地使用預設憑據的預設值應該是“true”;我看到這個問題讓很多人感到困惑——開發人員、使用者、IT 人員。

有關更多資訊,請參見此處:- <http://sticklebackplastic.com/post/2007/01/26/Poxy-proxies.aspx>

更新:我為微軟創建了這個問題/想法,將 useDefaultCredentials 的預設值從 false 更改為 true,這樣整個問題就消失了,.NET 應用程序“正常工作”;如果您同意,請投票:http:

//visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2397357-fix-it-so-that-net-apps-can-access-http-thru-授權

引用自:https://stackoverflow.com/questions/299940