C# 在不访问实际Web服务的情况下根据WSDL编程

C# 在不访问实际Web服务的情况下根据WSDL编程,c#,web-services,wsdl,C#,Web Services,Wsdl,我将使用C#从一些Web服务读取数据。我以前做过很多次,但那些时候我可以从我的开发机器直接访问Web服务 在这个项目中,我刚刚收到了一个.wsdl文件和几个.xsd文件,用于他们在本地intranet中的Web服务 我已经看到,我可以使用“添加Web引用”,并直接指向.wsdl文件,以便创建一个C#类 但是我怎样才能真正测试它呢?我想返回一些虚拟数据,以便在开发过程中可视化。对于这种情况有什么建议吗? 从上述源代码中,可以通过打开Visual Studio命令提示符并运行以下操作来生成.cs文件

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

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

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

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

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

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


您还可以尝试使用SOAPUI轻松地模拟服务。(免费web服务测试工具)

检查:


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


您也可以通过使用传统Web服务功能,但我建议您使用WCF。

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

您可能还想尝试“Fiddler”()之类的产品


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

我还发现本文非常有用: 它描述了从下载WSDL文件到创建测试项目所需的步骤:

  • 以某种方式获取WSDL

  • 在VS命令提示符中:

    wsdl/语言:CS/out:C:\Downloads\/协议: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上安装这个模拟服务,在这里不用谷歌搜索也可以。这个线程应该是第一次击中当有人谷歌!对此没有异议。这不是批评,只是链接来源的信息。这个模拟web服务返回什么样的示例数据?