【问题标题】:How to use a WSDL file to create a WCF service (not make a call)如何使用 WSDL 文件创建 WCF 服务(而不是拨打电话)
【发布时间】:2010-10-31 07:29:33
【问题描述】:

我有一个旧的 WSDL 文件,我想根据这个 WSDL 文件创建一个服务器。

WSDL 是从 ASMX 生成的(我猜想但我不确定)。

我怎样才能做到这一点?


original question OP 认为他需要基于 WSDL 创建一个客户端

【问题讨论】:

    标签: wcf wsdl


    【解决方案1】:

    使用 svcutil,您可以从 WSDL 创建接口和类(数据协定)。

    svcutil your.wsdl (or svcutil your.wsdl /l:vb if you want Visual Basic)
    

    这将在 C# 中创建一个名为“your.cs”的文件(或 VB.NET 中的“your.vb”),其中包含所有必要的项目。

    现在,您需要创建一个“MyService”类,它将实现服务接口 (IServiceInterface) - 或多个服务接口 - 这是您的服务器实例。

    现在一个类本身并没有真正的帮助——你需要在某个地方托管服务。您需要创建自己的 ServiceHost 实例来托管服务、配置端点等 - 或者您可以在 IIS 中托管您的服务。

    【讨论】:

    • 我对 svcutil 进行了同样的尝试,但并没有真正成功解决错误。您对我的问题有什么建议吗:goo.gl/dlen
    • "svcutil your.wsdl your.xsd" 是我工作所需要的!谢谢!
    • 查看这个 SO 答案以获取有关以 svcutil 喜欢的格式下载 wsdl 和 xsd 的信息。 stackoverflow.com/questions/286657/…
    • @marc_s 当我将它与我的 WSDL 文件一起使用时,它似乎以一种非常奇怪的方式重命名了一些元素,以至于进入我的服务器的请求甚至不会被接受。这正常吗?
    • @Arjun:不——这听起来像是你需要把所有相关事实放在一起,然后在 Stackoverflow 上问一个问题! :-)
    【解决方案2】:

    如果您知道要搜索什么,那里有很好的资源。尝试“合同优先”和 WCF。或“WSDL 优先”和 WCF。

    这是一个选择:

    【讨论】:

    • 致所有关注WSDL-First 基本概述 文章的人:请注意有关ReplyAction="*" 的评论。看来你需要摆脱它。该评论中有一系列解释给出了推理,但我还没有阅读。
    • 链接已失效
    • 到 WSCF 的新链接:github.com/WSCF/WSCF
    【解决方案3】:

    使用 svcutil.exe 和 /sc 开关来生成 WCF 合同。这将创建一个代码文件,您可以将其添加到您的项目中。它将包含创建服务所需的所有接口和数据类型。使用/o 开关更改输出位置,或者您可以在运行svcutil.exe 的文件夹中找到该文件。默认语言是 C#,但我认为(我从未尝试过)您应该可以使用 /l:vb 更改它。

    svcutil /sc "WSDL file path"
    

    如果您的 WSDL 有任何支持的 XSD 文件,请将这些文件作为 WSDL 之后的参数传入。

    svcutil /sc "WSDL file path" "XSD 1 file path" "XSD 2 file path" ... "XSD n file path"
    

    然后创建一个新类作为您的服务并实现您刚刚创建的合约接口。

    【解决方案4】:

    您可以使用 svcutil.exe 生成客户端代码。这将包括服务合同的定义以及所需的任何数据合同和故障合同。

    然后,只需删除客户端代码:实现服务契约的类。然后,您需要自己在服务中实现它们。

    【讨论】:

      【解决方案5】:

      使用 Visual Studio 中的“添加服务引用”工具,您可以将地址插入为:

      file:///path/to/wsdl/file.wsdl

      它会正确加载。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-06
        • 2013-02-11
        • 1970-01-01
        • 2010-10-31
        相关资源
        最近更新 更多