【问题标题】:.NET client app: how to reach Web Services in case of proxy?.NET 客户端应用程序:在代理的情况下如何访问 Web 服务?
【发布时间】:2010-09-12 17:42:17
【问题描述】:

我们正在开发一个 .NET 2.0 winform 应用程序。应用程序需要访问Web Services。然而,我们遇到了代理背后的用户问题。

流行的 Windows 备份应用程序(想想Mozy)提供了一个适度复杂的对话框窗口,专门用于代理设置。然而,重新实现另一个代理处理逻辑和 GUI 在我看来完全是浪费时间。

使用 .NET 客户端应用处理代理的最佳方法是什么?

更具体地说,我们有一个案例,用户在 Internet Explorer 中记录了他的代理设置(包括用户名和密码),因此 .NET 的默认代理行为应该可以工作。然而,在启动 IE 时仍会提示用户输入他的用户名和密码(这两个字段都已预先填写,用户只需单击确定) - 我们的 winform 应用程序仍然无法处理代理。

我们应该如何强制在启动 IE 时不提示用户输入用户名和密码?

【问题讨论】:

    标签: .net winforms proxy


    【解决方案1】:

    我认为提问者明白,如果用户需要代理,他必须使用 WebProxy,问题是“我如何获取 IE 的代理设置,这样我就不必让用户也将它们输入到我的应用中?”

    System.Net.WebProxy.GetDefaultProxy 已过时,您必须使用 System.Net.WebRequest.DefaultWebProxy。在http://msdn.microsoft.com/en-ca/magazine/cc300743.aspx有一篇文章描述它。

    【讨论】:

      【解决方案2】:

      遇到代理问题的客户是否都在同一个网络上(即他们都使用同一个代理服务器)?

      【讨论】:

        【解决方案3】:

        如果你打开 IE,点击 OK 到代理对话框,然后(让 IE 打开)尝试连接你的 winforms 应用程序,你的应用程序可以工作吗?还是您的应用无论如何都无法处理代理?

        【讨论】:

          【解决方案4】:

          把它放在你的应用程序的配置文件中:

          <configuration>
            <system.net>
              <defaultProxy>
                <proxy autoDetect="true" />
              </defaultProxy>
            </system.net>
          </configuration>
          

          您的应用程序将使用 IE 中的代理设置。如果您可以使用代理服务器在 IE 中看到您的 Web 服务,那么您应该能够从您的应用程序中“看到”它。

          【讨论】:

            【解决方案5】:

            使用 WebProxy 和 WebRequest 类。一次性将其包装到您自己的库中,并在您希望与代理一起使用的任何地方使用。

            【讨论】:

              【解决方案6】:

              研究使用 .NET WebProxy 类。它支持自动选择正确的默认设置。

              【讨论】:

                【解决方案7】:

                最简单的方法是使用 IE Explorer 中的代理设置。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2012-12-07
                  • 2019-11-08
                  相关资源
                  最近更新 更多