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

时间:2013-02-15 03:01:58

标签: c# .net networking proxy

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

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

  1. 自动检测代理设置
  2. 使用系统默认设置
  3. 无代理
  4. 然后哪种方法选择哪个方法?说Auto-detect proxy有点等于Use system default设置是对的吗?

1 个答案:

答案 0 :(得分:15)

根据WebRequest.DefaultWebProxy的{​​{3}},此属性将提供app.config文件中指定的代理信息。看起来MSDN article缺少这个具体细节。

WebRequest.GetSystemWebProxy()而言,.NET Framework v3.5 MSDN Article表示此方法将提供系统范围的配置代理(控制面板> Internet选项)。


我建议您实施以下三个选项:

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

  4. 修改:如果 app.config中没有配置代理 WebRequest.DefaultWebRequest 几乎WebRequest.GetSystemWebProxy()相同(至少对于.NET 4.5)。区别在于WebRequest.GetSystemWebProxy()将运行PAC脚本(如果有)用于代理定义 感谢MSDN article for itGabrielius以下评论。