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

有线索吗?


当前回答

当你在类文件中引用服务时,这里有几个响应可以找到正确的解决方案:将服务配置信息复制到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>

其他回答

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

如下所示添加endpointConfigurationName

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

如下所示找到endpointConfigurationName

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

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

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

在这种情况下,如果是winapp或web,则需要将WS配置设置包含到主项目app.config中。配置如果它是一个web应用程序。这是即使与PRISM和WPF/Silverlight的方式。

好的。我的情况有点不同,但最后我找到了解决办法: 我有一个控制台。exe -> DLL ->调用WS1 -> DLL ->调用WS2

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

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

在我的例子中,是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>