【问题标题】:What's the right way to handle a proxy autoconfig script to make a webservice call in .net?处理代理自动配置脚本以在.net中进行网络服务调用的正确方法是什么?
【发布时间】:2010-11-12 17:44:51
【问题描述】:

我正在使用 .NET 2.0 进行简单的 Web 服务调用。在大多数机器上,我不需要做任何特别的事情。但是,一个客户端位于使用代理自动配置脚本的公司网络上。几乎所有我能找到的东西(例如http://msdn.microsoft.com/en-us/magazine/cc300743.aspx#S3)都告诉我我不需要做任何事情。 .NET 将从注册表中读取代理设置并“正常工作”。对对对。

如果客户首先使用他们的浏览器访问 Web 服务 URL,那么我的 Web 服务调用确实有效。但是,一段时间后,Web 服务调用停止工作并出现 407(需要代理身份验证)错误。

我已尝试明确设置代理(如 Get Proxy configuration before accessing an external webservice (.NET 2.0) 所建议的那样),但没有任何运气。

我找到了这个MS knowledgebase article,其中包含有关在 WinHTTP.DLL 中调用 WinHttpGetProxyForUrl 的信息。如果我从注册表中提取 autoconfigurl 设置并在调用 WinHttpGetProxyForUrl 时使用它,它似乎可以工作,但必须去那里似乎是错误的。有谁知道让 .NET 使用默认 IE 代理自动配置脚本的“正确方法”?谢谢。

【问题讨论】:

  • 我发现这个 SO 问题 (stackoverflow.com/questions/202547/…) 包含有关 WinHttpGetIEProxyConfigForCurrentUser() 函数的信息。这至少应该让我避免直接​​访问注册表。

标签: .net proxy


【解决方案1】:

无论它是否应该工作,我都不会依赖网络服务的自动配置脚本。这些旨在为网络浏览器配置代理服务。

IT 组织应该确定要在该特定机器上为该特定 Web 服务使用哪个代理,并将其设置在配置文件中。

【讨论】:

  • 谢谢约翰。如果 .NET 能完成这项工作并透明地使用 IE 的代理设置,我很想避免使用自动配置脚本。尽管我很想把它交给他们的 IT 部门,但我更愿意在没有他们的情况下获得一个可行(如果不完美)的解决方案。
  • 如果它使用 IE 设置,它将使用 IE 使用的相同自动配置脚本。这是应该避免的。
  • 我想我不明白为什么自动配置脚本可以调用服务器来检索网页,但不能调用服务器来运行 Web 服务。
  • 一个由代表人类运行的具有 GUI 的程序调用。另一个正在被另一个程序调用。考虑这个实验:假设自动配置脚本根本不存在。您将如何编写代码来为您的 Web 服务客户端配置正确的代理服务器?
  • 好吧,我可能最终会得到一个类似于 IE 中的“网络设置”对话框,并告诉用户联系他们的 IT 人员以获取正确的设置:)
猜你喜欢
  • 2015-02-11
  • 2014-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-19
  • 1970-01-01
  • 2016-12-24
  • 2011-02-18
相关资源
最近更新 更多