这可以通过编程方式、在您的代码中或以声明方式在 web.config 或 app.config 中轻松实现。
您可以像这样以编程方式创建代理:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("[ultimate destination of your request]");
WebProxy myproxy = new WebProxy("[your proxy address]", [your proxy port number]);
myproxy.BypassProxyOnLocal = false;
request.Proxy = myproxy;
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
您基本上是将 WebProxy
对象分配给 request
对象的 proxy
属性。然后,此 request
将使用您定义的 proxy
。
要以声明方式实现相同的目标,您可以执行以下操作:
<system.net>
<defaultProxy>
<proxy
proxyaddress="http://[your proxy address and port number]"
bypassonlocal="false"
/>
</defaultProxy>
</system.net>
在您的 web.config 或 app.config 中。这将设置所有 http 请求都将使用的默认代理。根据您需要实现的具体目标,您可能需要也可能不需要 defaultProxy / proxy 元素的某些附加属性,因此请参阅相关文档。
如果您使用的是 WebClient
,它有一个您可以使用的 Proxy 属性。
正如其他人所提到的,有几种方法可以自动化代理设置检测/使用
网络配置:
<system.net>
<defaultProxy enabled="true" useDefaultCredentials="true">
<proxy usesystemdefault="true" bypassonlocal="true" />
</defaultProxy>
</system.net>
使用 this article 中描述的 WebProxy 类。
您还可以直接配置代理设置(配置或代码),然后您的应用程序将使用这些设置。
网络配置:
<system.net>
<defaultProxy>
<proxy
proxyaddress="http://[proxy address]:[proxy port]"
bypassonlocal="false"
/>
</defaultProxy>
</system.net>
代码:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("url");
WebProxy myproxy = new WebProxy("[proxy address]:[proxy port]", false);
request.Proxy = myproxy;
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
如果您希望应用程序使用系统默认代理,请将其添加到您的 Application.exe.config(其中 application.exe 是您的应用程序的名称):
<system.net>
<defaultProxy enabled="true" useDefaultCredentials="true">
<proxy usesystemdefault="true" bypassonlocal="true" />
</defaultProxy>
</system.net>
更多详细信息可在 MSDN article on System.Net 中找到
试试这个代码。在发出任何 http 请求之前调用它。该代码将使用 Internet Explorer 设置中的代理 - 不过,我使用 proxy.Credentials = ....
是因为我的代理服务器是经过 NTLM 身份验证的 Internet 加速服务器。试一试。
static void setProxy()
{
WebProxy proxy = (WebProxy)WebProxy.GetDefaultProxy();
if(proxy.Address != null)
{
proxy.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
WebRequest.DefaultWebProxy = new System.Net.WebProxy(proxy.Address, proxy.BypassProxyOnLocal, proxy.BypassList, proxy.Credentials);
}
}
WebProxy.GetDefaultProxy
自 Framework 4.5 起已过时,此方法返回 null。使用前最好三思而后行CredentialCache.DefaultNetworkCredentials
。如果您在 CredentialCache 中放了一些东西并且您的代理需要这样的凭据,那么它应该可以工作。否则将无济于事。
这个单线对我有用:
WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultNetworkCredentials;
CredentialCache.DefaultNetWorkCredentials
是 Internet Explorer 中设置的代理设置。
WebRequest.DefaultWebProxy.Credentials
用于应用程序中的所有互联网连接。
Fool 的代码对我来说非常有效,但是在 .NET 4.0 中,不要忘记检查 Proxy 是否为 NULL,这意味着没有配置代理(在公司环境之外)
所以这是解决我的公司代理问题的代码
WebClient web = new WebClient();
if (web.Proxy != null)
web.Proxy.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
这段代码对我有用:
WebClient wc = new WebClient();
wc.Proxy.Credentials = CredentialCache.DefaultCredentials;
自动代理检测是系统识别 Web 代理服务器并用于代表客户端发送请求的过程。此功能也称为 Web 代理自动发现 (WPAD)。启用自动代理检测后,系统会尝试查找负责返回可用于请求的代理集的代理配置脚本。
http://msdn.microsoft.com/en-us/library/fze2ytx2.aspx
var getHtmlWeb = new HtmlWeb() { AutoDetectEncoding = false, OverrideEncoding = Encoding.GetEncoding("iso-8859-2") };
WebProxy myproxy = new WebProxy("127.0.0.1:8888", false);
NetworkCredential cred = (NetworkCredential)CredentialCache.DefaultCredentials;
var document = getHtmlWeb.Load("URL", "GET", myproxy, cred);
我将用一个例子来补充上面的答案。
我在尝试通过 Web Platform Installer 安装软件包时遇到了代理问题
这也使用了一个配置文件,即 WebPlatformInstaller.exe.config
我尝试了 this IIS forum 中的编辑建议,即
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.net>
<defaultProxy enabled="True" useDefaultCredentials="True"/>
</system.net>
</configuration>
和
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.net>
<defaultProxy>
<proxy
proxyaddress="http://yourproxy.company.com:80"
usesystemdefault="True"
autoDetect="False" />
</defaultProxy>
</system.net>
</configuration>
这些都不起作用。
对我有用的是 -
<system.net>
<defaultProxy enabled="true" useDefaultCredentials="false">
<module type="WebPI.Net.AuthenticatedProxy, WebPI.Net, Version=1.0.0.0, Culture=neutral, PublicKeyToken=79a8d77199cbf3bc" />
</defaultProxy>
</system.net>
该模块需要向 Web 平台安装程序注册才能使用它。
不定期副业成功案例分享
BypassProxyOnLocal
属性设置为 True(如果需要)然后。