2009-12-01 88 views
2

Greetings, 我想編寫一個單元測試以確保我們的Web服務沒有將WSDL從最後一個已知的發佈版本中更改。原因是因爲對WSDL中對象的任何更改都會導致使用Apache Axis的客戶端失敗。即使你所做的只是添加一個不需要的屬性。因此,如果發生了變化,開發人員需要提醒他們,因爲產品管理需要與客戶溝通有關更改的信息,以便他們可以在新WSDL發佈時準備好重新編譯他們的存根。如何在不發出http請求的情況下在c#中生成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服務器的請求(這可能會或可能不會甚至可以運行單元測試運行時)。

+0

可能重複:http://stackoverflow.com/questions/1309861/are-there-any-tools-to-build-asmx-proxies-from-server-side-assemblies/1827650 – 2009-12-01 17:24:14

回答

2

我已經創建了一個工具,它可以從包含一個或多個WebServices的已編譯的c#程序集(dll)生成WSDL文件。通常情況下,您需要運行服務(IIS或其他)來託管.asmx,以便您可以使用/MyWebService.asmx?wsdl檢索WSDL。

此工具使用反射來生成WSDL文件,以檢索程序集中的所有信息DLL)。

下載源代碼,並可以在http://wsdlgenerator.codeplex.com

任何提示和技巧,歡迎來發現!

--Stef

相關問題