我的用例是这样的,我想呼叫一个web服务,如果我在需要身份验证的代理服务器后面,我想只使用默认凭据...
WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultCredentials;
否则我只是简单地拨打电话,确定是否需要事先验证是非常好的,而不是在我尝试拨打电话后处理异常.
想法?
只是在我第一次部署我的应用程序之后,才意识到有些用户在防火墙之后......正在努力测试它.而不是测试"407所需的身份验证",我只是做同样的Proxy
设置,无论是否需要......
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
我不确定相对的优点/缺点是什么(try {} catch {}没有代理,而不仅仅是使用上面的代码,但这个代码现在似乎对我工作(验证代理)和在家工作(没有).