如何在不发出http请求的情况下在c#中生成WSDL

如何在不发出http请求的情况下在c#中生成WSDL,c#,unit-testing,web-services,wsdl,C#,Unit Testing,Web Services,Wsdl,您好, 我想编写一个单元测试,以确保我们的web服务没有更改上次已知发布版本的WSDL。这是因为对WSDL中对象的任何更改都会导致使用ApacheAxis的客户端失败。即使您所做的只是添加一个不需要的属性。因此,如果有更改,则需要提醒开发人员,因为产品管理需要与客户沟通更改,以便他们可以在发布新WSDL时重新编译存根 所以我希望有这样的东西: [Test] public void TheWSDLHasNotChanged(){ XmlDocument currentWSDL = SomeM

您好, 我想编写一个单元测试,以确保我们的web服务没有更改上次已知发布版本的WSDL。这是因为对WSDL中对象的任何更改都会导致使用ApacheAxis的客户端失败。即使您所做的只是添加一个不需要的属性。因此,如果有更改,则需要提醒开发人员,因为产品管理需要与客户沟通更改,以便他们可以在发布新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服务器发出请求(在运行单元测试时,web服务器可能正在运行,也可能不在运行)

从程序集生成WSDL:
对于WCF,请使用SvcUtil.exe。看看这个。
对于ASP.NET,请使用ServiceDescriptionReflector。请参阅本指南:


抱歉,我在第一个回答中误解了您的代码片段。

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

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

可在以下位置找到下载和源代码:

欢迎任何提示和提示

--Stef

可能重复: