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

有线索吗?


当前回答

嗨,我也遇到过同样的问题,但是最好的解决方案是让. net来配置你的客户端配置。当我使用http:/namespace/service.svc?查询字符串添加服务引用时,我发现了这一点。wsdl=wsdl0,它不会在客户端创建配置端点。但是当我删除wsdl-wsdl0并且只使用url http:/namespace/service时。Svc,它在客户端配置文件中创建端点配置。简而言之,去掉“?WSDL=WSDL0”。

其他回答

当我在配置文件元素中引用没有全局作用域操作符的契约时,出现了这个错误。

i.e.

<endpoint contract="global::MyNamepsace.IMyContract" .../>

有效,但

<endpoint contract="MyNamepsace.IMyContract" .../>

给出“无法找到引用合同的默认端点元素”错误。

包含MyNamepsace的程序集。IMyContract位于与主应用程序不同的程序集中,因此这可能解释了使用全局作用域解析的必要性。

在我的例子中,我指的是一个图书馆项目的服务,而不是一个创业项目。 一旦我复制<system。serviceModel>节配置主启动项目,问题得到解决。

在任何应用程序的运行阶段,配置将从启动/父项目读取,而不是在单独的子项目中读取自己的配置。

对使用服务的非库应用程序进行单元测试可能会导致此问题。

The information that others have entered addresses the root cause of this. If you are trying to write automated test cases and the unit you are testing will actually invoke the service interface, you need to add the service reference to the test project. This is a flavor of the application using library type of error. I did not immediately realize this though because my code that consumes the interface is not in a library. However, when the test actually runs it will be running from the test assembly, not the assembly under test.

向单元测试项目添加服务引用解决了我的问题。

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

我得到了同样的错误,我尝试了很多事情,但没有工作,然后我注意到我的“合同”在所有项目中都不一样,我改变了合同,因为在解决方案中所有项目都是一样的,然后它起作用了。 这是项目A

<client>
    <endpoint address="https://xxxxxxxx" binding="basicHttpBinding" bindingConfiguration="basic" contract="ServiceReference.IIntegrationService" name="basic" />
</client>

项目B:

<client>
    <endpoint address="xxxxxxxxxxxxx" binding="basicHttpBinding" bindingConfiguration="basic" contract="ServiceReference1.IIntegrationService" name="basic" />
</client>

最后我将两者都更改为:

<client>
    <endpoint address="https://xxxxxxxxxxx" binding="basicHttpBinding" bindingConfiguration="basic" contract="MyServiceReferrence.IIntegrationService" name="basic" />
</client>