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

有线索吗?


当前回答

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

其他回答

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

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 -> DLL ->调用WS1 -> DLL ->调用WS2

我已经按照建议在Console.EXE.config中配置了WS1和WS2的服务模型。没有解决问题。

但它仍然没有工作,直到我将WS2的WebReference也添加到WS1,而不仅仅是添加到实际创建和调用WS2代理的DLL中。

我也有同样的问题。我在类库中使用WCF服务,并从windows应用程序项目调用类库。但我是忘记改变<系统。serviceModel>在windows应用程序项目的配置文件中。类库app.Config文件的serviceModel>。 解决方案:将外部项目的配置与类库的wcf配置相同。

还有另一种方法我找到正确的endpointConfigurationName。

如下所示添加endpointConfigurationName

EservicesNew.ServiceClient eservicenew = new EservicesNew.ServiceClient("BasicHttpsBinding_IService");

如下所示找到endpointConfigurationName

添加Web Reference之后,打开配置。Svcinfo文件中生成的参考文件。

找到了两个端点,我使用了正确的端点bindingConfiguration值,即basichttpbinding_iservice

当你在类文件中引用服务时,这里有几个响应可以找到正确的解决方案:将服务配置信息复制到app.config web中。这些答案似乎都没有告诉你应该复制什么。让我们试着纠正一下。

下面是我从我的类库的配置文件复制到我的控制台应用程序的配置文件中,为了解决这个疯狂的错误,我写了一个名为“TranslationServiceOutbound”的服务。

你基本上想要系统内的一切。serviceModel部分:

  <system.serviceModel>
<bindings>
  <basicHttpBinding>
    <binding name="BasicHttpBinding_ITranslationServiceOutbound" />
  </basicHttpBinding>
</bindings>
<client>
  <endpoint address="http://MyHostName/TranslationServiceOutbound/TranslationServiceOutbound.svc"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ITranslationServiceOutbound"
    contract="TranslationService.ITranslationServiceOutbound" name="BasicHttpBinding_ITranslationServiceOutbound" />
</client>