动态调用WCF服务

时间:2011-12-21 21:57:13

标签: wcf wsdl

我们希望为客户提供进入Web服务的能力,我们的应用程序将检查服务,为他们提供输入参数和类型,客户将输入参数和我们的应用程序将调用该Web服务。我找到了代码示例,它们将动态检查和调用.asmx服务,3.5中的示例依赖于共享接口,以及4.0中使用新4.0程序集的示例。

我缺少的是一种使用.NET 3.5动态检查WCF服务而无需交换共享接口的方法。我已经能够确定服务名称和方法,但值参数不会在WSDL上通过。

这是我的简单服务:

    [OperationContract]
    string GetDataInt(int value);

    [OperationContract]
    string GetDataStringInt(int value, string stringValue);

      [OperationContract]
    string GetDataStringIntBool(int value, string stringValue, bool boolValue);

以下是WSDL上的参数(参数):

<wsdl:message name="IService1_GetDataInt_InputMessage">
<wsdl:part name="parameters" element="tns:GetDataInt"/>
</wsdl:message>
<wsdl:message name="IService1_GetDataInt_OutputMessage">
<wsdl:part name="parameters" element="tns:GetDataIntResponse"/>
</wsdl:message>
<wsdl:message name="IService1_GetDataStringInt_InputMessage">
<wsdl:part name="parameters" element="tns:GetDataStringInt"/>
</wsdl:message>
<wsdl:message name="IService1_GetDataStringInt_OutputMessage">
<wsdl:part name="parameters" element="tns:GetDataStringIntResponse"/>
</wsdl:message>

wsdl上没有参数类型。在.NET 3.5中是否有办法检查WCF服务并调用它?

1 个答案:

答案 0 :(得分:1)

参数当然是在WSDL中,但WSDL并不是扁平的(除非你使用提供扁平化WSDL的WCFExtras)。您必须查找WSDL和XSD导入 - 这些指向另一个包含其余WSDL相关信息的文件。