【问题标题】:How can I use a web service from local WSDL file?如何使用本地 WSDL 文件中的 Web 服务?
【发布时间】:2014-01-28 14:21:34
【问题描述】:
我已从提供商处获得一个 WSDL 文件,我已将其作为服务引用添加到我在 Visual Studio 2013 中的 C# 项目中。
我可以看到我需要的相关类,但是当我调用它们的函数时,我的程序没有传输任何东西。我已将 Wireshark 配置为监听,但在我运行程序时没有数据来自我的程序。
我可以在 Visual Studio 的哪个位置看到 Web 服务尝试连接的 IP 地址/URL?在某些时候我假设它建立了一个 HTTP 连接,我在哪里可以看到这个代码来检查 URL/IP 地址?
【问题讨论】:
标签:
c#
web-services
visual-studio
wsdl
【解决方案1】:
WSDL 文件不包含服务端点的地址。您可能创建了一个服务引用或 Web 引用,它为您创建了一个客户端类。如果你用默认构造函数实例化这个客户端(我们称之为ExampleClient):
var serviceCLient = new ExampleClient();
那么 URI 将是您导入的 WSDL 文件的路径。如果您将生成的 WSDL 文件文件导入实际的服务 URI,这通常可以正常工作,但在您的情况下,您需要告诉它服务在哪里运行。您可以在构造函数中传递服务 URI:
var serviceCLient = new ExampleClient("http://example.com/service/endpoint");
或编辑您的app.config 或web.config(取决于项目类型)。它会有这样的东西:
<system.serviceModel>
<client>
<endpoint address="C:\path\to\your.wsdl" etc etc etc... />
</client>
</system.serviceModel>
您应该在那里更改address 属性。
对于旧式 Web 引用,您可以右键单击 Visual Studio 中的引用(在 Web References 文件夹中的项目下,然后选择“属性”。属性屏幕包含一个“Web 引用 URL”,您可以对其进行编辑指向实际的服务 URI。