【问题标题】:Adding a SOAP web service reference添加 SOAP Web 服务引用
【发布时间】:2012-01-16 17:10:49
【问题描述】:

我正在尝试在 VS.NET 2010 界面中添加 SOAP Web 服务,但我知道服务器拒绝了连接。负责服务的人告诉我它正在工作。我问他们是否有 wsdl 文件,但据说他们没有。

问题是他们缺少 wsdl 造成的,还是我可以假设我这边有问题?

【问题讨论】:

  • 我会更加努力地追究他们的 WSDL,就好像他们已经开发了一个供消费的 Web 服务然后他们将拥有一个 WSDL。这并不意味着它可以通过 url 公开获得,但他们应该能够为您提供一个,即使他们通过电子邮件将其发送给您。如果他们连这点都做不到,我会担心的。

标签: c# wcf soap


【解决方案1】:

如果他们不愿意在服务上公开他们的服务元数据,那么看看他们是否允许您访问包含服务合同、操作和数据合同的程序集。然后,您无需任何元数据即可创建服务代理。

// Create service proxy on the fly
var factory = new ChannelFactory<IMyServiceContract>("NameOfMyClientEndpointInConfigFile");
var proxy = factory.CreateChannel();

// Create data contract
var requestDataContract = new MyDataContract();

// Call service operation.
var responseDataContract = proxy.MyServiceOperation(requestDataContract);

如果您可以访问服务端配置文件,这也很有帮助,这样您就可以将端点详细信息从那里复制到您的客户端配置中。

【讨论】:

    【解决方案2】:

    看起来他们的服务没有公开元数据。尝试浏览到 wsdl url,看看是否有任何返回。 http://server/blah/blah?wsdl

    【讨论】:

    • 很公平。他们必须为您提供可以从中检索到的 wsdl 文件或 URL,否则您将无法通过添加服务引用(或 Web 引用)来创建服务代理。如果您有示例请求和响应,则可以手动创建服务客户端,但如果请求和响应很复杂,这并不容易。我肯定会推动 wsdl。希望我的回答有所帮助。
    • 这不是真的。您不需要元数据来创建代理。您可以使用ChannelFactory 即时创建代理,这确实非常简单。看我的例子。
    • 嗨 Hugh,您下面的方法很好,但它预先假定托管服务是使用 WCF(和 .NET)开发的,而它可能不是。如果开发托管服务的团队有能力提供合同程序集,你会想象他们提供或公开 wsdl 会更容易(只是我的 tuppenceworth)。
    猜你喜欢
    • 2011-01-12
    • 2013-09-02
    • 1970-01-01
    • 2011-01-23
    • 2011-10-13
    • 2014-12-23
    • 1970-01-01
    • 2011-07-09
    • 1970-01-01
    相关资源
    最近更新 更多