https://www.cnblogs.com/Javi/p/7274268.html

1. HttpWebRequest类的Proxy属性,只要设置了该属性就能够使用代理了,如下:

1             //设置代理

2         WebProxy WP = new WebProxy("41.76.44.76", 3128);

3             ICredentials jxCredt = new NetworkCredential("proxy_username", "proxy_password");

4             WP.Credentials = jxCredt;

5

6             HttpWebRequest webreq = HttpWebRequest.Create(uri);

7             webreq.Proxy = WP;//将代理赋值给HttpWebRequest的Proxy属性

2.但是程序中的每一个HttpWebRequest都需要如此设置,是否存在更简便的方法,例如在某个地方设置了代理,则整个程序的所有请求都使用代理呢。

答案是:有这样的方法。

===================================

不过在此之前先来理解一下 C#的WebRequest类(即HtteWebRequest的父类)在发送前的一些处理:

新创建一个WebRequest实例时(通过Create方法),会自动初始化其Proxy属性,

而它还有一个DefaultWebProxy属性,当用户没有手动设置Proxy属性时,

则WebRequest会使用DefaultWebProxy作为其Proxy;

而DefaultWebProxy是读取项目的app.config文件来进行初始化;

当没有app.config文件,或者没有在app.config中配置Proxy时,

DefaultWebProxy就会去读取Internet Explorer (IE)的代理设置

============================================

提示:

怎么查看当前的请求Rquest是否使用了代理?

3.所以设置全局代理的方式有以下几种:

第一种:程序不做任何处理,仅设置IE的代理;

第二种:在程序的app.config文件进行相关的配置,官方文档,如:

1 <?xml version="1.0" encoding="utf-8"?>

2 <configuration>

3   <system.net>

4     <defaultProxy>

5       <proxy

6         proxyaddress="http://192.168.1.10:3128"

7       />

8     </defaultProxy>

9   </system.net>

10 </configuration>

使用app.config设置代理时,如果想在运行时修改代理,则需要编辑app.config文件,

可以参考:C#读写config配置文件

 第三种:在代码中为DefaultWebProxy重新赋值,如下:

1 WebProxy WP = new WebProxy("41.76.44.76", 3128);

2 ICredentials jxCredt = new NetworkCredential("proxy_username", "proxy_password");//如果有用户名和密码需要设置

3 WP.Credentials = jxCredt;

4

5 WebRequest.DefaultWebProxy = WP;

4.总结:

第一种直接在IE上设置的,更多适合平时测试,因为让用户去作这种设置很不理智;

第二种和第三种都相对简单,只要设置好,整个程序的所有WebRequest都会使用代理,但第二种还需要对app.config文件进行编辑,所以非硬性要求,建议使用第三种,设置DefaultWebProxy的方式;

假如不想使用代理,则将DefaultWebProxy设为null,这样即使IE或者app.config设置了代理也不会影响。

    代理的优先顺序:手动设置WebRequest.Proxy属性 > DefaultWebProxy > app.config > IE的代理设置;

[Z] C#程序中设置全局代理(Global Proxy)的更多相关文章

  1. 中小研发团队架构实践之生产环境诊断工具WinDbg 三分钟学会.NET微服务之Polly 使用.Net Core+IView+Vue集成上传图片功能 Fiddler原理~知多少? ABP框架(asp.net core 2.X+Vue)模板项目学习之路(一) C#程序中设置全局代理(Global Proxy) WCF 4.0 使用说明 如何在IIS上发布,并能正常访问

    中小研发团队架构实践之生产环境诊断工具WinDbg 生产环境偶尔会出现一些异常问题,WinDbg或GDB是解决此类问题的利器.调试工具WinDbg如同医生的听诊器,是系统生病时做问题诊断的逆向分析工具 ...

  2. C#程序中设置全局代理(Global Proxy)

    1. HttpWebRequest类的Proxy属性,只要设置了该属性就能够使用代理了,如下: 1             //设置代理 2         WebProxy WP = new Web ...

  3. 在.NET Core程序中设置全局异常处理

    以前我们想设置全局异常处理只需要这样的代码: AppDomain currentDomain = AppDomain.CurrentDomain; currentDomain.UnhandledExc ...

  4. Linux设置全局代理与yum代理

    设置全局代理,方法如下: 修改 /etc/profile 文件,添加下面内容: http_proxy=http://username:password@yourproxy:8080/ ftp_prox ...

  5. Qt应用程序中设置字体

    Qt应用程序中设置字体 应用程序中经常需要设置字体,例如office软件或者是其他的编辑器软件等等.这里主要涉及到如下几个概念:字体,字号以及风格(例如:粗体,斜体,下划线等等).Qt里面也有对应的类 ...

  6. ZT Android布局】在程序中设置android:gravity 和 android:layout_Gravity属性

    Android布局]在程序中设置android:gravity 和 android:layout_Gravity属性 分类: [Android基础] 2011-04-19 16:06 54739人阅读 ...

  7. Ubuntu「一键」设置全局代理

    Ubuntu「一键」设置代理 sonictl note: the DNS problem may be still there. Except proxychains. WSL (Windows Su ...

  8. 在Winform程序中设置管理员权限及为用户组添加写入权限

    在我们一些Winform程序中,往往需要具有一些特殊的权限才能操作系统文件,我们可以设置运行程序具有管理员权限或者设置运行程序的目录具有写入的权限,如果是在操作系统里面,我们可以设置运行程序以管理员身 ...

  9. (转)在Winform程序中设置管理员权限及为用户组添加写入权限

    本文转载自:http://www.cnblogs.com/wuhuacong/p/5645172.html 在我们一些Winform程序中,往往需要具有一些特殊的权限才能操作系统文件,我们可以设置运行 ...

随机推荐

  1. sql面试题-----行转列

    tem数据表如下图 select Time as 日期, sum ( case end ) as 胜, sum ( case end ) as 负 from tem group by Time 执行结 ...

  2. Lubuntu安装屏幕键盘onboard,使触摸屏可以登录和输入

    Lubuntu18.04 LTS桌面使用 LightDM 显示管理器,默认已经安装了GTK+ 欢迎界面 需要的话可以下列命令安装使用 $ sudo apt-get install lightdm-gt ...

  3. GetLastError

    GetLastError返回错误表[0]-操作成功完成. [1]-功能错误. [2]-系统找不到指定的文件. [3]-系统找不到指定的路径. [4]-系统无法打开文件. [5]-拒绝访问. [6]-句 ...

  4. Centos服务器端口无法访问

    使用GPRS A6 模块进行TCP连接的时候,一度认为A6模块坏掉了 最终只是服务器端口都被防火墙堵住了 使用之前一直用的  service iptables stop  找不到iptables 原来 ...

  5. sqlserver数据类型转换

    Insert into [Cet.4] Select CONVERT(VARCHAR(20),CONVERT(DECIMAL(20,7),F1)) FROM Sheet1$ 我从外部导入了一个学号表, ...

  6. JS_高程7.函数表达式(1)

    定义函数的两种常见的方法: 1 . 函数声明 2. 函数表达式 # 差异 (1)函数声明 ,具有函数声明提升的特征. (2)函数声明的函数的name属性为函数的名称:使用函数表达式定义的函数在ES5中 ...

  7. uploadify Cookie 验证登入上传问题

    上传文件时必须验证是否已登入. 当用FormsAuthentication做登入,使用FormsAuthentication.FormsCookieName进行验证是否已登入即可. <scrip ...

  8. hihocoder1712 字符串排序(思维)

    https://hihocoder.com/problemset/problem/1712 感觉解法呼之欲出,却出不来.. 一个很好的思路是,根据新的顺序表,把给定的n组字符串换成旧表对应的字符,然后 ...

  9. pygame-KidsCanCode系列jumpy-part2-加速度与摩擦力

    上一节,我们整理了一个游戏开发的新框架(即:Game类),本节将运用这个框架,实现基本的加速度及摩托力效果. 先定义游戏的精灵(下面代码命名为sprites.py) from part_02.sett ...

  10. C# 坐标系

    C#坐标系 一.概述 从数学角度讲,Point是一个二维矢量,包含两个公共整型属性,属性用大写X和Y(c#中公共属性一般约定以大写字母开头).当坐标不是整数值是float时,用PointF代替Poin ...