我的用例是這樣的,我想調用一個web服務,如果我在一個需要身份驗證的代理服務器後面我想只使用默認憑據...我如何確定(優雅地)是否需要代理服務器身份驗證在C#winforms應用程序
WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultCredentials;
否則我就簡單地撥打電話,這將是非常好的,以確定是否需要身份驗證了前面,而不是處理異常後我嘗試撥打電話。
想法?
我的用例是這樣的,我想調用一個web服務,如果我在一個需要身份驗證的代理服務器後面我想只使用默認憑據...我如何確定(優雅地)是否需要代理服務器身份驗證在C#winforms應用程序
WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultCredentials;
否則我就簡單地撥打電話,這將是非常好的,以確定是否需要身份驗證了前面,而不是處理異常後我嘗試撥打電話。
想法?
System.Net.WebProxy
有一個屬性UseDefaultCredentials
可能是你想要的(但我不得不承認這裏有點無知)。有關文件的鏈接是here。
我認爲這可能會工作,事實上是基本上與上述相同的事情。謝謝。 – 2009-01-29 06:06:46
只是在我第一次部署我的app之後,我意識到有些用戶在防火牆後面......開始測試它。而不是我只是做同樣的Proxy
設置是否可能需要或不是「需要407身份驗證」做一個測試...
System.Net.HttpWebRequest req = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(uri.AbsoluteUri);
//HACK: add proxy
IWebProxy proxy = WebRequest.GetSystemWebProxy();
proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
req.Proxy = proxy;
req.PreAuthenticate = true;
//HACK: end add proxy
req.AllowAutoRedirect = true;
req.MaximumAutomaticRedirections = 3;
req.UserAgent = "Mozilla/6.0 (MSIE 6.0; Windows NT 5.1; DeepZoomPublisher.com)";
req.KeepAlive = true;
req.Timeout = 3 * 1000; // 3 seconds
我不知道是什麼的相對優勢/劣勢(試{}沒有代理優先,而不僅僅是使用上面的代碼),但是現在這個代碼在我的工作(認證代理)和在家(無)都可以工作。
我不認爲這裏的PreAuthenticate標誌是特別需要的,這隻會導致請求在第一次請求到Web服務器後立即進行認證,如果憑據已設置 – 2013-04-29 06:34:28
看起來,如果你不理會代理東西,.NET should just use the IE proxy settings,這似乎是處理代理的最「正確」的方式...
如果您想爲您在IE的代理服務器設置,你也可以查看註冊表:檢查註冊表樹的HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
分支 - 在那裏有很多選項和設置。最值得注意的是:ProxyEnable
(DWORD,0 =無代理,1 =代理啓用)。
實際上,似乎這畢竟不是一個問題,以前我是設置像這樣的AUTH ...
WebProxy proxy = new WebProxy(@"http://<myProxyAddress>:8080");
proxy.Credentials = new NetworkCredential(<myUSerName>, <myPassword>, <myDomain>);
WebRequest.DefaultWebProxy = proxy;
這將是罰款,當我是代理之後,但拋出一個錯誤當沒有代理時,當然我期望上面出現同樣的錯誤,因爲我仍然只是設置了相同的憑證,但是你知道他們對於假設事情的看法......事實上,在設置默認值時沒有任何錯誤信譽,都是甜蜜的。
我強烈建議您嘗試this answer以類似的問題(不是:不是接受的答案)。沒有代碼改變,只是你的app.config文件中的一行。
出於好奇,如果您只使用默認憑據,那麼即使在不需要時也一直應用這些憑據會有什麼缺點? – BFree 2009-01-29 03:53:23
實際上,我還沒有嘗試過使用默認憑證,只使用特定憑證,雖然使用了相同的類(DefaultWebProxy),並且拋出了一個異常,但是很好的調用,我會在下班回家時嘗試使用默認憑證它拋出相同的異常,雖然) – 2009-01-29 04:15:36