Dot-Net
如果我設置 HttpGetEnabled = false 會發生什麼
我對元數據發布概念感到困惑。
如果在我寫的 WCF 服務配置文件中:
<serviceMetadata httpGetEnabled="false"/>不管是真是假。當我嘗試使用“添加服務引用…”在客戶端應用程序中提供服務引用並點擊“發現”時,我能夠檢索服務引用。
但是當刪除以下兩行時: -
<endpoint address="mex" binding="mexBasicHttpBinding" contract="IMetadataExchange"/> <serviceMetadata httpGetEnabled="false"/>現在,當我嘗試使用“添加服務引用…”在客戶端應用程序中提供引用並點擊“發現”時,我無法檢索服務引用…。
現在誰能告訴我這到底是什麼意思。為什麼將其設置為 False 後仍然允許設置參考。以及為什麼在刪除這些行之後不允許設置參考。
MEX 和 WSDL 是兩種不同的方案,用於告訴潛在客戶您的服務結構。因此,您可以選擇以“元數據交換格式”(MEX) 或“ Web 服務描述語言”(WSDL) 的形式公開您的服務契約——後者可通過 HTTP(s) 訪問。
因此,為了生成代理,您需要元數據資訊。當您刪除 serviceMetadata-line 時,您表示您沒有提供 WSDL 格式的元數據。
但是之前的行,在 MEX 中發布您的元數據,仍然處於活動狀態,因此您可以從這些元數據生成代理。
由此自然而然地得出,當您既不提供 WSDL 也不提供 MEX 格式的資訊時,您將無法生成代理。
正如 Joel C 正確指出的那樣,綁定是一個(n 幾乎)正交概念。您是否允許客戶端通過基本的 HTTP、ws HTTP、網路命名管道或水晶球與您交談,完全不取決於您如何發布您的服務。
WCF 安全指導項目和/或 MS WCF 安全“實踐和模式”可能會提供更深入的見解。