针对WSDL编程而无需访问实际的Web服务

时间:2009-09-18 06:53:32

标签: c# web-services wsdl

我将使用C#从几个Web服务中读取数据。我以前做过很多次,但那些时候我已经从我的开发机器直接访问了web服务。

在这个项目中,我刚刚发送了一个.wsdl文件,以及一些.xsd文件,用于他们在本地Intranet中的Web服务。

我已经看到我可以使用“添加Web引用”,并直接指向.wsdl文件,以便创建一个C#类。

但我怎么能真正测试呢?我想返回一些我可以在开发时可视化的虚拟数据。有关这种情况的任何提示吗?

6 个答案:

答案 0 :(得分:16)

Mock Webservice

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

  

wsdl / language:CS /namespace:Your.Namespace.Here   / out:目录\ To \ Save \ To \ / protocol:SOAP / serverinterface   最后,您-WSDL文件,here.wsdl

答案 1 :(得分:2)

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

检查:

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

您可能还想尝试像“Fiddler”(http://www.fiddler2.com

这样的产品

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

答案 5 :(得分:0)

我还发现这篇文章非常有用: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 服务 (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 上有这个模拟服务