我有这个:
"%PROGRAMFILES%\Microsoft SDKs\Windows\v7.0A\bin\svcutil.exe" ^
/noLogo /t:code /l:cs /mc /tcv:Version35 /ct:System.Collections.Generic.List`1 /n:*,MYNS ^
/config:MyServiceProxy.config ^
/out:ServiceProxy.cs ^
https://remote-service/ServiceA?wsdl
它按照我的预期生成类,类型和端点配置。 当我添加多个端点ex:
"%PROGRAMFILES%\Microsoft SDKs\Windows\v7.0A\bin\svcutil.exe" ^
/noLogo /t:code /l:cs /mc /tcv:Version35 /ct:System.Collections.Generic.List`1 /n:*,MYNS ^
/config:MyServiceProxy.config ^
/out:ServiceProxy.cs ^
https://remote-service/ServiceA?wsdl https://remote-service/ServiceB?wsdl https://remote-service/ServiceC?wsdl
MyServiceProxy.config中没有端点,ServiceProxy.cs中缺少所有ServiceAWsClient()方法。
UPDATE:我删除了/ i选项,因为它使类成为内部。
UPDATE:我现在可以生成两个.cs文件,如果我使用/ serializer:DataContractSerializer选项,我得到了ServiceAWsClient()类,没有它我得到了共享类型。 有没有办法让两者同时出现?
UPDATE:包含ServiceAWsClient()类的文件仍然不好。方法缺少参数。为什么? WSDL包含:
<xs:element name="service" type="tns:service"/>
<xs:element name="serviceResponse" type="tns:serviceResponse"/>
<xs:complexType name="service">
<xs:sequence>
<xs:element name="context" type="ns1:GenericContext" minOccurs="0"/>
<xs:element name="userData" type="ns2:UserData" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="serviceResponse">
<xs:sequence>
<xs:element name="resultContext" type="ns1:GenericResponseContext" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
svcutil生成:
public void service()
{
base.Channel.service();
}
应该是:
public MYNS.GenericResultContext service(MYNS.GenericContext context, MYNS.ServiceA userData)
{
MYNS.service inValue = new MYNS.service();
inValue.context = context;
inValue.userData = userData;
MYNS.serviceResponse retVal = ((MYNS.ServiceA)(this)).service(inValue);
return retVal.resultContext;
}
TY!
答案 0 :(得分:1)
这一代人失败了。 svcutil不支持多目标。
实际上,ClientBase(生成基类的代理)只能访问一个端点。
你不幸的是必须生成3个不同的代理。实际上,这些代理正在封装与服务通信的实际通道(套接字)。因此,似乎一个代理只能处理一个端点