2010-06-14 81 views
8

參考我的previous question,我想知道如何從客戶端應用程序中提取WCF服務的信息,以便知道如果服務僅公開一個端點時會公開哪些方法/類型使用webHttpBinding?從webHttpBinding端點獲取元數據

總而言之,在我之前的問題中,我開始知道使用webHttpBinding的端點沒有在生成的WSDL中公開,因爲它將是JSON端點並且不兼容。

回答

10

WebHttpBinding是一個基於REST的綁定--REST確實而不是公開了與SOAP相反的WSDL/XSD之類的元數據。

目前無法從REST端點提取元數據。目前正在努力爲REST建立一個名爲WADL (Web Application Description Language)的類似構造 - 但這還遠遠不夠標準化。現在,使用REST端點,您必須自己弄清楚,或者您需要在服務提供商提供的文檔上提供一些文檔。一個靜態的HTML頁面或其他東西。

.NET 4確實提供了一定級別的自動生成的幫助頁面 - 有關更多信息,請參閱this blog postMSDN docs。但它仍然遠不如WSDL/XSD那樣具有形式化和機器可解釋性。

0

我想知道爲什麼REST樣本告訴你完全暴露一個MEX端點。這是不需要的,這裏是如何幹淨地刪除它:

  1. 從配置文件的服務部分刪除MEX端點。

  2. 刪除配置文件的服務行爲部分中的服務元數據啓用行。

  3. 編輯Visual Studio項目(假設它是一個WCF服務庫),並刪除行:

    <StartArguments> /client:"WcfTestClient.exe」 </StartArguments >

如果你有其他非休息服務,你會想離開最後2部分禮物。禁用MEX時,必須刪除WCF客戶端,否則在調試過程中如果無法枚舉項目中的任何服務(無論它們是否具有任何有用的元數據),它將發出抱怨。