【问题标题】:How to Generate a WSDL in c# without making a http request如何在不发出 http 请求的情况下在 c# 中生成 WSDL
【发布时间】:2012-11-10 22:50:59
【问题描述】:

您好, 我想编写一个单元测试来确保我们的 Web 服务没有从最后一个已知的发布版本更改 WSDL。这样做的原因是因为对 WSDL 中的对象的任何更改都会导致使用 Apache Axis 的客户端失败。即使您所做的只是添加一个不需要的属性。因此,如果有更改,则需要通知开发人员,因为产品管理需要与客户就更改进行沟通,以便他们准备好在新的 WSDL 发布时重新编译他们的存根。

所以我希望有这样的东西:

[Test]
public void TheWSDLHasNotChanged(){
   XmlDocument currentWSDL = SomeMysteryServiceIDontKnowAbout.GetWSDLForWebServiceClass(typeof(UserService));

   XmlDocument existingWSDL = new XmlDocument().Load("ExistingWsdl.wsdl");
   Assert.That(currentWSDL, Is.Equal.To(existingWSDL));
}

出于显而易见的原因,我不想向 Web 服务器发出请求(在运行单元测试时它可能正在运行,也可能不运行)。

【问题讨论】:

标签: c# unit-testing web-services wsdl


【解决方案1】:

从程序集生成 WSDL:
对于 WCF,请使用 SvcUtil.exe。看到这个MSDN HowTo
对于 ASP.NET,使用 ServiceDescriptionReflector。请参阅本指南:http://craigandera.blogspot.se/2004/10/generating-wsdl-without-aspnet_18.html

对不起,我在第一个答案中误解了您的代码 sn-p。

【讨论】:

    【解决方案2】:

    我创建了一个工具,它可以从包含一个或多个 Web 服务的已编译 c# 程序集 (dll) 生成 WSDL 文件。通常,您需要一个正在运行的服务(IIS 或其他)托管 .asmx,以便您可以使用 /MyWebService.asmx?wsdl 检索 WSDL

    此工具使用反射生成 WSDL 文件以从程序集 (dll) 中检索所有信息。

    下载和源代码可以在http://wsdlgenerator.codeplex.com找到

    欢迎任何提示和提示!

    --史蒂夫

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-08
      • 1970-01-01
      • 1970-01-01
      • 2020-03-02
      • 2014-01-23
      相关资源
      最近更新 更多