0

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

[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个参数。

4

1 回答 1

0

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

于 2013-09-18T22:47:14.373 回答