【问题标题】:Programming against WSDL without access to actual webservice在不访问实际 Web 服务的情况下针对 WSDL 进行编程
【发布时间】:2010-11-29 09:35:15
【问题描述】:

我将使用 C# 从一些 web 服务中读取数据。我以前做过很多次,但那些时候我可以从我的开发机器直接访问网络服务。

在这个项目中,我刚刚收到了一个 .wsdl 文件和几个 .xsd 文件,用于他们在本地 Intranet 中的 Web 服务。

我看到可以使用“添加Web引用”,直接指向.wsdl文件,这样就创建了一个C#类。

但是我怎样才能真正测试它呢?我想返回一些我可以在开发时可视化的虚拟数据。针对这种情况有什么建议吗?

【问题讨论】:

    标签: c# web-services wsdl


    【解决方案1】:

    我还发现这篇文章非常有用:https://ivangrigoryev.com/en/how-to-mock-a-web-service-in-dot-net/ 它描述了从下载 WSDL 文件到创建测试项目所需的步骤:

    1. 以某种方式获取 WSDL

    2. 在 VS 命令提示符中:

      wsdl /language:CS /out:C:\Downloads\ /protocol:SOAP /serverinterface C:\Downloads\webservice.wsdl

    3. 使用空模板创建一个新的 ASP .NET Web 应用程序

    4. 将第 2 步生成的文件添加到项目中

    5. 向项目添加新服务(添加 -> 新项目 -> Web Service (ASMX))

    6. 更改此添加的 Web 服务的代码中的类定义,使其实现正确的接口,例如将 System.Web.Services.WebService 替换为您的。

    7. 按 Alt+Enter 并使用存根自动实现接口。

    8. 点击 F5,服务将运行,您的浏览器将打开,复制 URL 并使用它而不是真实的 URL。

    这仅适用于 .Net Framework,因为 .Net Core 和 .Net 5 放弃了 WCF 服务器支持。但我发现在 .Net 5 上拥有主要项目是可以接受的,但在 .Net Fw 4.8 上拥有这个模拟服务

    【讨论】:

      【解决方案2】:

      Mock Webservice

      从上述来源,可以通过打开 Visual Studio 命令提示符并运行以下内容来生成 .cs 文件:

      wsdl /language:CS /namespace:Your.Namespace.Here /out:Directory\To\Save\To\ /protocol:SOAP /serverinterface finally-your-wsdl-file-here.wsdl

      【讨论】:

      • 不用谷歌搜索就可以在这里提问。这个帖子应该是有人google的时候第一次点击!
      • 对此没有异议。这不是批评,只是链接来源的信息。
      • 这个模拟网络服务返回什么类型的样本数据?
      【解决方案3】:

      您可能还想尝试“Fiddler”(http://www.fiddler2.com)之类的产品

      它允许您捕获 HTTP(或 HTTPS)数据包并发送虚假的自动回复文件,就好像服务器已经发送了响应一样。我将它用于我的项目,当测试服务器离线(经常如此)时它会产生奇迹。我获取了一个旧的响应数据包,将其保存为文本文件,然后再次将其发回,而我正在构建的应用程序不知道它不是来自实际主机。

      【讨论】:

        【解决方案4】:

        与 Windows SDK 捆绑在一起的 svcutil.exe 工具(位于 C:\Program Files\Microsoft SDKs\Windows\v6.0\Bin)是一个很好的命令行工具,可以生成 WCF 客户端代理。我发现这是询问 WSDL 的好方法。它将为服务创建一个接口,然后创建一个实现该接口的代理类。然后,您可以模拟实现该接口的其他东西以方便测试。

        【讨论】:

          【解决方案5】:

          创建自己的服务器端存根很容易。假设你想用 WCF 来做,那么go here。然后,您可以添加一些基本逻辑来让您的客户端正常工作。

          您也可以通过WSDL tool's /Server option 使用旧版 Web 服务功能,但我建议您使用 WCF。

          【讨论】:

            【解决方案6】:

            您还可以尝试使用 SOAP UI 轻松模拟服务。 (免费的网络服务测试工具)

            检查:

            http://www.soapui.org/gettingstarted/mocking.html

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-06-28
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多