服务引用命名空间/合同名称问题

时间:2017-11-07 01:29:48

标签: c# soap

我已经创建了服务参考。当我尝试为它提供ServiceSoap的命名空间时,它会生成名称空间为ServiceSoap.ServiceSoap,因此,我为客户端部分获取了一个app.config:

<client>
<endpoint address="http://blablabla/_mmwebext/mmwebext.dll?Soap"
  binding="basicHttpBinding" bindingConfiguration="ServiceSoap"
  contract="ServiceSoap.ServiceSoap" name="ServiceSoap" />
<endpoint address="http://blablabla/_mmwebext/mmwebext.dll?Soap"
  binding="customBinding" bindingConfiguration="ServiceSoap12"
  contract="ServiceSoap.ServiceSoap" name="ServiceSoap12" />
</client>

但是当我尝试实例化一个新的ServiceSoapClient对象时,我收回了这个错误:

&#34;找不到名称为&#39; ServiceSoap&#39;的端点元素和合同&#39; ServiceSoap&#39;在ServiceModel客户端配置部分中。这可能是因为没有为您的应用程序找到配置文件,或者因为在客户端元素中找不到与此名称匹配的端点元素。&#34;

如果我尝试指定名称和端点,那就是

_mm = new ServiceSoapClient("ServiceSoap", endpoint.AbsoluteUri.ToString());

如果我使用无参数构造函数尝试它:     _mm = new ServiceSoapClient();

似乎我需要能够:1)传递合同名称或2)强制服务引用停止添加ServiceSoap。在名称前面,我指定为名称空间。我没有看到这样做的方法(构造函数没有为合同名称取一个参数,我也没有看到一种方法来阻止命名空间创建将ServiceSoap变为ServiceSoap.ServiceSoap。

1 个答案:

答案 0 :(得分:0)

这里的问题是这一行:

[System.ServiceModel.ServiceContractAttribute(Namespace =“http://menandmice.com/webservices/”,ConfigurationName =“ServiceSoap”)]

需要改为:

[System.ServiceModel.ServiceContractAttribute(Namespace =“http://menandmice.com/webservices/”,ConfigurationName =“ ServiceSoap.ServiceSoap ”)]

显然,“ConfigurationName”ACTUALLY意味着合同名称,或者至少需要匹配app.config中的合同名称。