我将使用C#从几个Web服务中读取数据。我以前做过很多次,但那些时候我已经从我的开发机器直接访问了web服务。
在这个项目中,我刚刚发送了一个.wsdl文件,以及一些.xsd文件,用于他们在本地Intranet中的Web服务。
我已经看到我可以使用“添加Web引用”,并直接指向.wsdl文件,以便创建一个C#类。
但我怎么能真正测试呢?我想返回一些我可以在开发时可视化的虚拟数据。有关这种情况的任何提示吗?
答案 0 :(得分:16)
从上面的源代码中,可以通过打开Visual Studio命令提示符并运行以下内容来生成.cs文件:
wsdl / language:CS /namespace:Your.Namespace.Here / out:目录\ To \ Save \ To \ / protocol:SOAP / serverinterface 最后,您-WSDL文件,here.wsdl
答案 1 :(得分:2)
答案 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 文件到创建测试项目所需的步骤:
以某种方式获取 WSDL
在 VS 命令提示符中:
wsdl /language:CS /out:C:\Downloads\ /protocol:SOAP /serverinterface C:\Downloads\webservice.wsdl
使用空模板创建新的 ASP .NET Web 应用程序
将第 2 步生成的文件添加到项目中
向项目添加新服务(添加 -> 新项目 -> Web 服务 (ASMX))
更改此添加的 Web 服务的代码中的类定义,使其实现正确的接口,例如,将 System.Web.Services.WebService 替换为您的接口。
按 Alt+Enter 并使用存根自动实现接口。
按 F5,服务将运行,您的浏览器将打开,复制 URL 并使用它而不是真实的 URL。
这仅适用于 .Net Framework,因为 .Net Core 和 .Net 5 放弃了 WCF 服务器支持。但是我发现在 .Net 5 上拥有主要项目是可以接受的,但是在 .Net Fw 4.8 上有这个模拟服务