2012-08-16 84 views
2

我是WCF新手,我在wcf中寫了一些服務。它現在發佈在Intranet上,一些應用程序已經在使用該服務。目前,我必須爲其他開發人員編寫有關輸入參數/數據類型和輸出參數的文檔。沒關係,如果我們使用.Net平臺來使用服務。它會自動在WebReferences文件夾中創建服務/類,並且Intellisense完美地工作。我們如何知道wcf服務的輸入/輸出類型?

但是,如果用戶使用PHP或傳統的ASP,它不會那樣工作。他們必須知道確切的名稱,參數的類型,我必須非常仔細地記錄服務。

通過使用WSDL如下:我們如何知道我們想要使用的服務的數據類型和參數?如果它沒有在WSDL中顯示,我應該在哪裏查看這些信息?如果有人給我WCF服務沒有文檔,我怎麼知道如何使用該服務?

非常感謝。

這下面是我對服務

[ServiceContract] 
public interface IEmail 
{ 
    [OperationContract] 
    bool InsertEmail(string Subject, string SentFrom, string SentTo, int ApplicationID, int TemplateID, string DataText); 
} 

以下是關於我的服務的確切WSDL信息接口。

<?xml version="1.0" encoding="utf-8" ?> 
- <wsdl:definitions name="Email" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:tns="http://tempuri.org/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"> 
- <wsdl:types> 
- <xsd:schema targetNamespace="http://tempuri.org/Imports"> 
    <xsd:import schemaLocation="http://myservice/Email.svc?xsd=xsd0" namespace="http://tempuri.org/" /> 
    <xsd:import schemaLocation="http://myservice/Email.svc?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/" /> 
    </xsd:schema> 
    </wsdl:types> 
- <wsdl:message name="IEmail_InsertEmail_InputMessage"> 
    <wsdl:part name="parameters" element="tns:InsertEmail" /> 
    </wsdl:message> 
- <wsdl:message name="IEmail_InsertEmail_OutputMessage"> 
    <wsdl:part name="parameters" element="tns:InsertEmailResponse" /> 
    </wsdl:message> 
- <wsdl:portType name="IEmail"> 
- <wsdl:operation name="InsertEmail"> 
    <wsdl:input wsaw:Action="http://tempuri.org/IEmail/InsertEmail" message="tns:IEmail_InsertEmail_InputMessage" /> 
    <wsdl:output wsaw:Action="http://tempuri.org/IEmail/InsertEmailResponse" message="tns:IEmail_InsertEmail_OutputMessage" /> 
    </wsdl:operation> 
    </wsdl:portType> 
- <wsdl:binding name="BasicHttpBinding_IEmail" type="tns:IEmail"> 
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" /> 
- <wsdl:operation name="InsertEmail"> 
    <soap:operation soapAction="http://tempuri.org/IEmail/InsertEmail" style="document" /> 
- <wsdl:input> 
    <soap:body use="literal" /> 
    </wsdl:input> 
- <wsdl:output> 
    <soap:body use="literal" /> 
    </wsdl:output> 
    </wsdl:operation> 
    </wsdl:binding> 
- <wsdl:service name="Email"> 
- <wsdl:port name="BasicHttpBinding_IEmail" binding="tns:BasicHttpBinding_IEmail"> 
    <soap:address location="http://myservice/Email.svc" /> 
    </wsdl:port> 
    </wsdl:service> 
    </wsdl:definitions> 

回答

2

如果你的意思是你看不到的WSDL服務使用的所有類型,這是因爲WSDL WCF創建經常(也許永遠)分割成若干位。這些其他位從主WSDL鏈接到。

因此,如果您瀏覽到http://myservice/Email.svc?wsdl,您會看到您在問題中提出的WSDL。在這裏,您可以看到指向其他兩個模式的鏈接 - http://myservice/Email.svc?xsd=xsd0http://myservice/Email.svc?xsd=xsd1。如果您瀏覽到這些內容,則會找到您要查找的類型信息。

相關問題