我如何代理我的连接?我想要3个默认的HttpWebRequest objs,它们不会通过代理,另外3个会通过代理。我是做WebRequestObject.Proxy = myProxy;在对象上我想使用代理并且对3个objs什么都不做我不知道?此外,对象将以未知顺序初始化,因此我可能有2个不是,2个是代理,第3个是非,而最终是。它只是简单地写.Proxy = myProxy?
答案 0 :(得分:10)
对于需要代理的请求,是的,这样可以正常工作:
request.Proxy = myProxy;
对于希望绕过代理的请求,请使用:
request.Proxy = System.Net.GlobalProxySelection.GetEmptyWebProxy;
如果您想使用IE的默认代理(或者如果您在app / web.config中设置了默认代理),只需不要设置代理,或将其设置为null:
request.Proxy = null;
有关possible HttpWebRequest.Proxy values here和GetEmptyWebProxy here的更多信息。
答案 1 :(得分:3)
现在不推荐使用System.Net.GlobalProxySelection.GetEmptyWebProxy。
我最终遇到了这种情况
private static void SetProxy(HttpWebRequest request)
{
if (AppConstants.UseProxyCredentials)
{
//request.Proxy = available in System.Net configuration settings
request.Proxy.Credentials = Credentials.GetProxyCredentials();
}
else
{
request.Proxy = null;
//request.Proxy.Credentials = n/a
}
}
使用web.config中的代理详细信息:
<system.net>
<defaultProxy>
<proxy
autoDetect="False"
bypassonlocal="True"
scriptLocation="http://www.proxyscript..."
proxyaddress="http://proxyurl..." />
</defaultProxy>
</system.net>
<system.web>
答案 2 :(得分:2)
是的,您将为要代理的请求上的每个属性创建一个新的代理对象,并将其留空以查找您已完成的代理。对于未设置的那些,他们将使用app.config中system.net配置中的默认代理值。