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