参数未生成正确WSDL的WCF方法

时间:2013-09-18 22:08:20

标签: wcf

我有一个简单的服务定义:

[ServiceContract]
public interface IInterface12
{

    [OperationContract]
    void SendInterface12(string appId);
}

我在服务中实现了:

public void SendInterface12(string appId)
{

问题是字符串参数appId没有显示出来。完整的WSDL在这里:

      <?xml version="1.0" encoding="UTF-8"?>

-<wsdl:definitions xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://tempuri.org/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://tempuri.org/" name="Interface12Service">


-<wsdl:types>


-<xsd:schema targetNamespace="http://tempuri.org/Imports">

<xsd:import namespace="http://tempuri.org/" schemaLocation="http://localhost/TestInterface12/Interface12Service.svc?xsd=xsd0"/>

<xsd:import namespace="http://schemas.microsoft.com/2003/10/Serialization/" schemaLocation="http://localhost/TestInterface12/Interface12Service.svc?xsd=xsd1"/>

</xsd:schema>

</wsdl:types>


-<wsdl:message name="IInterface12_SendInterface12_InputMessage">

<wsdl:part name="parameters" element="tns:SendInterface12"/>

</wsdl:message>


-<wsdl:message name="IInterface12_SendInterface12_OutputMessage">

<wsdl:part name="parameters" element="tns:SendInterface12Response"/>

</wsdl:message>


-<wsdl:portType name="IInterface12">


-<wsdl:operation name="SendInterface12">

<wsdl:input message="tns:IInterface12_SendInterface12_InputMessage" wsaw:Action="http://tempuri.org/IInterface12/SendInterface12"/>

<wsdl:output message="tns:IInterface12_SendInterface12_OutputMessage" wsaw:Action="http://tempuri.org/IInterface12/SendInterface12Response"/>

</wsdl:operation>

</wsdl:portType>


-<wsdl:binding name="BasicHttpBinding_IInterface12" type="tns:IInterface12">

<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>


-<wsdl:operation name="SendInterface12">

<soap:operation style="document" soapAction="http://tempuri.org/IInterface12/SendInterface12"/>


-<wsdl:input>

<soap:body use="literal"/>

</wsdl:input>


-<wsdl:output>

<soap:body use="literal"/>

</wsdl:output>

</wsdl:operation>

</wsdl:binding>


-<wsdl:service name="Interface12Service">


-<wsdl:port name="BasicHttpBinding_IInterface12" binding="tns:BasicHttpBinding_IInterface12">

<soap:address location="http://localhost/TestInterface12/Interface12Service.svc"/>

</wsdl:port>

</wsdl:service>

</wsdl:definitions>

我错过了什么?我必须有一个带参数的服务操作,但是当我生成代理时,字符串appId参数没有参数。它说它需要0个参数。

1 个答案:

答案 0 :(得分:0)

很可能WSDL引用了一个定义参数的XSD文件。搜索“导入”或“包含”以查看该XSD的位置。如果这是您的wsdl位置:http://myserver.com/X.svc?WSDL=WSDL0,则XSD位于http://myserver.com/x.svc?XSD=XSD0(或XSD1,XSD2 ...)。可能你的WSDL引用了另一个WSDL(WSDL1),它引用了XSD(或其中一些)。