在 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 中使用 Web 参考
Visual Studio 2012 与 Visual Studio 2005 中的小程序慢得多
使用TFS 2010在Visual Studio 2012中进行代码审查