English 中文(简体)
.NET客户端应用程序:在代理的情况下如何访问Web服务?
原标题:
  • 时间:2008-09-24 13:48:48
  •  标签:

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

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

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

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

我们应该做些什么来确保在启动IE时不会提示用户输入用户名和密码?

最佳回答

将其放在应用程序的配置文件中:

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

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

问题回答

使用WebProxy和WebRequest类。只需将其一次性打包到您自己的库中,并在您想要使用代理的任何地方使用。

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

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

如果您打开IE,单击代理对话框中的“确定”,然后(保持IE打开)尝试连接您的winforms应用程序,那么您的应用程序可以工作吗?或者您的应用程序无论如何都无法处理代理?

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

我想询问者明白,如果用户需要代理,他必须使用WebProxy,问题是“我如何获得IE的代理设置,这样我就不必要求用户也在我的应用程序中键入它们了?”

System.Net.WebProxy.GetDefaultProxy已过时,您必须使用System.Net.Web Request.DefaultWebProxy。http://msdn.microsoft.com/en-ca/magazine/cc300743.aspx





相关问题
热门标签