我已经在VS2008/中添加了web服务的代理。NET 3.5解决方案。在构造客户端。net时会抛出以下错误:

在ServiceModel客户端配置部分中找不到引用合约“IMySOAPWebService”的默认端点元素。这可能是因为没有为您的应用程序找到配置文件,或者因为在客户端元素中没有找到与此契约匹配的端点元素。

搜索此错误告诉我在契约中使用完整的名称空间。这是我的app.config完整的命名空间:

<client>
  <endpoint address="http://192.168.100.87:7001/soap/IMySOAPWebService"
            binding="basicHttpBinding" bindingConfiguration="IMySOAPWebServicebinding"
            contract="Fusion.DataExchange.Workflows.IMySOAPWebService" name="IMySOAPWebServicePort" />
</client>

我正在运行XP本地(我提到这是因为一些谷歌点击提到win2k3) 将app.config复制到app.exe。配置,所以这也不是问题。

有线索吗?


当前回答

我也有同样的问题。事实证明,对于web REFERENCE,你必须将URL作为构造函数的第一个参数:

new WebService.WebServiceSoapClient("http://myservice.com/moo.aspx");

对于一个新样式的web SERVICE REFERENCE,你必须在配置中提供一个引用端点条目的名称:

new WebService.WebServiceSoapClient("WebServiceEndpoint");

在Web中使用相应的条目。config或App.config:

<client>
      <endpoint address="http://myservice.com/moo.aspx"
        binding="basicHttpBinding" 
        bindingConfiguration="WebService"
        contract="WebService.WebServiceSoap"
        name="WebServiceEndpoint" />
    </client>
  </system.serviceModel>

很难消除“它在旧的程序中工作”的狭隘观点……

其他回答

如果在类库中调用服务,并从另一个项目调用类库,则可能出现此错误。

在我的案例中,我已经将app.config重命名为[appname].exe。手动配置。这最终在文件名中添加了一个额外的.config后缀。解决方案是将其重命名为[appname].exe,以消除额外的.config扩展名。

我曾经遇到过这个问题。这是因为我还在开发使用WCF服务的接口。我配置测试应用程序和继续开发。然后在开发中,我改变了一些服务的名称空间。所以我再次检查了“系统”。serviceModel ->客户端->端点->合同”。配置匹配WCF类。那么问题就解决了。

对我来说,解决方案是从客户端web.config中的端点名称属性中删除端点名称 这允许代理使用

ChannelFactory<TService> _channelFactory = new ChannelFactory<TService>("");

锻炼了一整天。 此外,一旦这个修复到位,合同名称是错误的,尽管它在最初的错误出现时是错误的。 再三检查合同名称字符串的人!! 属性:伊恩

在我的情况下,我在启动项目和使用同名服务的项目中都添加了服务。它工作…