WebRequest.DefaultWebProxy和WebRequest.GetSystemWebProxy()之间有什么区别?

woo*_*ddy 20 .net c# proxy networking

我想知道DefaultWebProxy和之间的主要区别是什么GetSystemWebProxy().在MSDN上有一些描述,但我仍然觉得我需要更多细节才能更好地理解.

另外,假设我在C#winform应用程序上有以下选项进行代理配置

  1. 自动检测代理设置
  2. 使用系统默认设置
  3. 没有代理人

然后哪个方法去哪个选项?说这Auto-detect proxy有点等于Use system default设置是对的吗?

Jes*_*sse 16

按照MSDN文章WebRequest.DefaultWebProxy,这个属性将提供在指定的代理信息app.config文件.看起来.NET Framework v3.5 MSDN文章缺少这个具体细节.

到目前为止WebRequest.GetSystemWebProxy(),它的MSDN文章指出,此方法将提供系统范围的配置代理(控制面板> Internet选项).


这就是我建议你实现概述的三个选项的方法:

  1. 自动检测代理设置
    • 实现自己的代理发现逻辑; 要么
    • 更改系统设置以匹配您的应用程序的设置,并使用WebRequest.GetSystemWebProxy()(我不建议这种方法); 要么
    • 最好不要包含此选项,并让用户使用相应的系统范围设置以及"使用系统默认设置"选项;
  2. 使用系统默认设置
    • 使用WebRequest.GetSystemWebProxy();
  3. 没有代理人
    • 确保取消设置WebRequest.DefaultWebProxyWebRequest.Proxy属性;

编辑:如果app.config中 没有配置代理,WebRequest.DefaultWebRequest几乎WebRequest.GetSystemWebProxy()(至少对于.NET 4.5)相同.区别在于WebRequest.GetSystemWebProxy()将运行PAC脚本(如果有)进行代理定义.
感谢Gabrielius23W以下的评论.