2011-02-01 90 views

回答

2

WCF服務的WSDL通常是通過將?wsdl服務的HTTP(S)URL檢索。但是你必須在ServiceMetadataBehavior中允許這個WSDL檢索。 WCF 4允許這種默認爲所有基於HTTP的服務,如果你使用WCF服務應用程序項目模板:

通過鍵入HTTP(S)服務的基於URL到瀏覽器
<behaviors> 
    <serviceBehaviors> 
    <behavior> 
     <serviceMetadata httpGetEnabled="true" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 

你也應該得到幫助頁面的超鏈接到WSDL 。

在WCF 3.x中,您必須手動允許並在服務定義中使用行爲配置。

<behaviors> 
    <serviceBehaviors> 
    <behavior name="myConfig"> 
     <!-- requires HTTPS to be configured for your service --> 
     <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<services> 
    <service name="..." behaviorConfiguration="myConfig"> 
    ... 
    </service> 
</services> 

以這種方式檢索WSDL只能通過HTTP(S)GET。您還可以使用WS-MetadataExchange協議從Metadata endpoint中檢索服務元數據 - 它也支持不同的傳輸協議。 WCF中的WSDL僅用於SOAP服務。

1

WCF中的WSDL URI用於創建可用於與客戶端通信的代理類

WSDL URI獲取/調用元數據。對於客戶端來構建代理類,他們需要知道服務合約,操作契約,WCF中使用的方法以及WCF方法中的參數,但無法生成這些信息,客戶端將無法生成代理類在應用程序中託管WCF服務,因此元數據實際上負責在應用程序配置文件中生成所有這些信息。