2011-04-15 36 views
13

我對元數據發佈概念感到困惑。如果我設置HttpGetEnabled = false會發生什麼

如果WCF服務配置文件,我曾寫過:

​​

無論是真的還是假的。當我嘗試使用「添加服務引用...」在客戶端應用程序中提供服務引用並單擊「發現」時,我可以檢索服務引用。

但是,當以下兩行中刪除: -

<endpoint address="mex" binding="mexBasicHttpBinding" contract="IMetadataExchange"/> 

<serviceMetadata httpGetEnabled="false"/> 

現在後,當我試圖給使用客戶端應用程序引用「添加服務引用...」,並點擊「發現」,我是不是能夠檢索服務參考....

現在誰能告訴我究竟是什麼意思。 爲什麼設置爲False後仍然允許設置參考。爲什麼刪除這些行後,不允許設置參考。

-Anil

回答

21

MEX和WSDL是告訴潛在客戶您服務結構的兩種不同方案。因此,您可以選擇將服務合約公開爲「元數據交換格式」(MEX)或「web service description language」(WSDL) - 後者可通過HTTP訪問。

因此,爲了生成代理,您需要元數據信息。當你刪除serviceMetadata行時,你說你沒有提供WSDL格式的元數據。

但是,之前在MEX中發佈元數據的行仍處於活動狀態,因此您可以根據這些元數據生成代理。

從那些自然而然的是,當你既不提供WSDL也不提供MEX格式的信息,你不能生成代理。

正如Joel C正確指出的,綁定是一個(幾乎)正交的概念。無論您允許客戶通過基本的HTTP與您通話,使用HTTP,網絡命名管道還是水晶球,都不依賴於您發佈服務的方式。

WCF security guidance project和/或MS "practises and patterns" for WCF security可能提供更深入的瞭解。

+0

感謝它清除了很多懷疑.... – 2011-05-04 19:01:10

+0

我的榮幸。 :) – Cornelius 2011-05-05 07:45:08

+0

我不知道這是否回答了這個問題:_「如果我設置HttpGetEnabled = false?會發生什麼?」,是嗎? – 2017-11-02 09:53:11

5

您要添加的服務引用,其基於元數據交換(MEX)的代理。 httpGetEnabled配置允許您設置一個http端點,該端點允許使用WSDL生成非mex代理,例如傳統的.NET web服務代理。它們是不同的協議,由不同的設置控制。我相信如果你有<serviceMetadata httpGetEnabled="true" httpGetUrl="http://localhost:8080/SampleService?wsdl"/>,你可以添加一個來自.NET 2.0的web服務引用,你無法使用配置<serviceMetadata httpGetEnabled="false"/>來完成。

+0

這意味着通過指定「httpGetEnabled = true」將使我的WCF服務作爲web服務使用。如果是,那麼「BasicHttpBinding」有什麼用?由於使用BasicHttpBinding的主要優點是使您的WCF服務可用於舊版本,並且可以作爲web服務使用(功能稱爲向後兼容性,我猜,我對此不太確定),請您告訴我們究竟是什麼「HttpGetEnabled」和「BasicHttpBinding」之間的差異/共同關係。如果它們是相關的,那麼當我使用「WsHttpBinding」時,爲什麼我們應該使用「HttpGetEnabled = true」行 – 2011-04-15 06:38:40

+2

WCF服務如何與其他進程(其端點綁定)進行通信以及它如何公開有關其自身的元數據(其元數據配置)彼此獨立。如果您計劃以SOAP Web服務的身份訪問服務(使用配置了WsHttpBinding的端點),將元數據公開爲WSDL(使用'httpGetEnabled =「true」'和'httpGetUrl')是有意義的,在沒有其他的情況下使用。 – 2011-04-15 14:56:56

+0

那麼爲什麼除去以下兩行之後: - <端點地址= 「MEX」 結合= 「mexBasicHttpBinding」 合同= 「IMetadataExchange接口」/> 爲什麼它不容許我在客戶端應用程序中提供參考(我不想將它用作web服務) 我覺得暴露的ServiceMetadata是與WCF通信相關的某個地方。由於沒有元數據,客戶端無法建立通信。由於客戶端應用程序必須知道服務的類型和其他組件才能建立與元數據可能的通信 – 2011-04-18 07:10:14

相關問題