我已经在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。配置,所以这也不是问题。

有线索吗?


当前回答

这让我抓狂。

我使用的是带有WCF的Silverlight 3 Prism (CAB)

当我在Prism模块中调用WCF服务时,我得到了相同的错误:

找不到引用合同的默认端点元素 服务模型客户端配置部分中的'IMyService'。这 可能是因为没有找到应用程序的配置文件 或者因为找不到与此契约匹配的端点元素 在client元素中

原来它在Shell的.xap文件中寻找ServiceReferences。ClientConfig文件,而不是模块的ServiceReferences中。ClientConfig文件。我将端点和绑定添加到现有的servicereference中。我的Silverlight Shell应用程序中的ClientConfig文件(它调用它自己的WCF服务)。

然后,我必须重新构建Shell应用程序,为我的Web项目的ClientBin文件夹生成新的.xap文件。

现在这行代码终于可以工作了:

MyServiceClient myService = new MyServiceClient();

其他回答

我也有同样的问题 我正在使用桌面应用程序和全球天气网络服务

我删除了服务引用,并添加了web引用,问题解决了 谢谢

我遇到了同样的问题,但是更改契约名称空间对我不起作用。所以我尝试了。net 2风格的web引用,而不是。net 3.5的服务引用。这工作。

要在Visual Studio 2008中使用Web引用,请单击“添加服务引用”,然后在出现对话框时单击“高级”。您将发现一个选项,该选项允许您使用Web引用而不是服务引用。

不要将服务客户端声明行作为类字段, 中使用的每个方法都创建实例。 这样问题就会解决。如果您将服务客户端实例创建为类字段,则会出现设计时错误!

在我的例子中,是exe。生产环境中缺少配置文件。

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

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

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