在 Visual Studio 2012 中使用 Web 参考

Posted

技术标签:

【中文标题】在 Visual Studio 2012 中使用 Web 参考【英文标题】:Consume web reference in Visual Studio 2012 【发布时间】:2013-08-29 12:11:08 【问题描述】:

我正在尝试将第三方托管的 Web 引用添加到 Visual Studio 2012 中的新项目。特别是 UPS API。我已经联系了他们的支持,如果我在回答此问题之前收到回复,则会更新。

现在添加一个普通的网络参考,我关注了MSDN: How to add a reference to a web service 上的文章,并在How to add a Web reference Visual Studio 2012 上对 SO 提出问题。但是,对于 UPS API,在使用此方法时,会收到以下错误:

There was an error downloading '@987654323@$metadata'.

请求失败,HTTP 状态为 404:未找到。

现在在 UPS 开发社区论坛上,有一个与此类似的问题here。但是,他们的解决方案是使用 UPS 提供的示例项目以及其中已有的 Web 参考并对其进行编辑。如果我要在现有应用程序中使用 Web 引用,则此解决方案无效。

附加信息,UPS 确实在开发包中提供了 WSDL 文件。我犹豫是否要采用添加它们的方法,因为在开发和生产之间,Web 服务的 URL 会发生变化。如果这可能是一个解决方案,您是否介意解释一下 WSDL 从开发到生产的生命周期以及如何配置 URL。

UPS 技术支持回复:

感谢您的询问。对于您在尝试将 UPS 开发工具包 API 集成到您的解决方案时遇到的困难,我深表歉意。

由于许多可能的编程语言和环境,我们不直接支持客户端代码。

为方便起见,UPS 在每个开发人员工具包中都提供了示例代码。这些文件包括 C#、Java、XML、php 和 Perl 的代码示例,可用作如何集成 UPS 开发人员 API 的示例。除开发人员工具包中提供的示例外,没有其他示例可用。请记住,您需要自定义这些文件以满足您的特定需求。

【问题讨论】:

我假设您已经注册并请求了他们developer kit中所述的访问密钥? 开发 WSDL 和生产 WSDL 的区别在于开发实际上不执行任何操作。它严格用于测试。您可以通过在 app.config 中将它们设置为 dev 和 release 来使 URL 可配置 是的,我已经注册,并且使用我的访问密钥构建示例代码工作正常。问题是向现有项目添加网络引用。 @paqogomez UPS 提供用于测试和开发的“客户集成环境”。开发 WSDL 仍然会调用他们的服务。 您是否尝试使用“添加服务参考”? “添加 Web 引用”使用旧版“ASMX”技术,该技术不适用于新开发。 【参考方案1】:

虽然这是个老问题,但我认为这对再次遇到同样问题的人会有所帮助。我最近几个小时都经历过同样的情况。我尝试使用端点https://onlinetools.ups.com/webservices/Rate 添加服务引用。

虽然此网址在我的浏览器中浏览时会显示 ups 提供的开发人员指南中提到的信息,我可以在使用我的帐户凭据登录他们的网站后访问这些信息,但在添加参考时会显示错误 - 无论是服务参考或本文问题中提到的网络参考。似乎他们故意不提供服务资源管理器所需的所有基本文件。

然后我在本地主机中托管了 Rate.wsdl 文件并尝试添加 Web 服务引用。我忘记将所有文件(.xsd、.cs 等)包含在与 Rate.wsdl 相同的文件夹中。所以它显示错误。在文件夹中包含所有这些文件后,我可以成功添加 Web 服务引用。

有了它,explorer 找到了服务。

希望这会有所帮助。

【讨论】:

【参考方案2】:

我的解决方案是获取提供的 WSDL 文件,并在我的系统上使用它们的路径作为 Web 参考 URL。在 Project.Properties.Settings 中为 Web 服务的实际 url 自动添加了一个设置。

【讨论】:

以上是关于在 Visual Studio 2012 中使用 Web 参考的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio 2012 中使用 dlib

在 Visual Studio 2012 中使用 Web 参考

Visual Studio 2012 与 Visual Studio 2005 中的小程序慢得多

使用TFS 2010在Visual Studio 2012中进行代码审查

在 Microsoft Visual Studio 2012 中使用 Java

使用 Visual Studio 2012 创建 MSI 或设置项目