.net内部如何调用wsdl webservice方法?

时间:2013-05-18 11:12:33

标签: c# asp.net .net web-services

我想了解基本机制:据我所知.net解析wsdl(使用ServiceDescription类)并生成将进行调用的代理类。

但是这些代理类是如何生成的呢?通过CodeDom或其他什么?

2 个答案:

答案 0 :(得分:1)

从元数据生成代理类。通常,服务会公开它的公共合同元数据合同。

在WCF服务中,元数据将以类似

的方式公开
<endpoint address="mex" 
    binding="mexHttpBinding" 
    contract="IMetadataExchange"/>

您可以详细了解元数据标准here和WCF import-export metadata docs

如果没有公开元数据合同,则无法生成代理。

答案 1 :(得分:1)

我用dotPeek反编译了wsdl.exe,据我所知,它使用CodeDomProvider进行代码生成。这就是GenerateCode方法签名的样子。

  private void GenerateCode(DiscoveryClientDocumentCollection[] documents, 
     CodeDomProvider codeProvider, WsdlParameters parameters, string outputFileName)
  {
   ...    
  }