24

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

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

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

那么哪个方法去哪个选项?说Auto-detect proxy有点等于Use system default设置对吗?

4

1 回答 1

20

根据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中没有配置代理,则与(至少对于 .NET 4.5)几乎相同。WebRequest.GetSystemWebProxy()不同之处在于WebRequest.GetSystemWebProxy()它将运行 PAC 脚本(如果有)以进行代理定义。
感谢Gabrielius23W的以下评论。

于 2013-02-15T04:26:22.667 回答