我有一个从类库引用的WCF Web服务。 在项目运行之后,当从类库中创建服务客户端对象时,我收到带有消息的InvalidOperationException:

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

我用来创建实例的代码是:

myServiceClient = new MyServiceClient();

MyServiceClient继承自的地方

System.ServiceModel.ClientBase

我该如何解决这个问题?

注意:我有一个单独的控制台应用程序,它只是创建相同的服务对象并调用它,它没有任何问题。

===============>>#1 票数:8

或者您可以在代码中设置端点:

http://msdn.microsoft.com/en-us/library/ms731862.aspx

BasicHttpBinding binding = new BasicHttpBinding();
EndpointAddress address = new EndpointAddress("http://url-to-service/");

// Create a client that is configured with this address and binding.
MyServiceClient client = new MyServiceClient(binding, address);

===============>>#2 票数:4 已采纳

这是我的类库的app.config文件:

您应该将此配置设置放到主应用程序的配置文件中。 .NET应用程序(调用您的类库)使用来自它自己的配置文件的数据,而不是来自库配置文件。

===============>>#3 票数:1

我有类似的情况。 我有一个叫做Web服务的类库,然后我有一个调用class-lib的.DLL的.EXE。 我认为这是.EXE的配置文件,而不是.DLL配置文件。

但正如理查德上面所说,我必须完全限定名称空间。 这有点痛苦。 以下是我改变的内容。 痛苦在于我必须在两个地方更改它,一个在创建服务引用时生成的reference.cs中,另一个在配置文件中生成。 因此,每次我更改Web服务并执行“更新引用”时,我都必须再次更改C#代码。

1)您必须实际更改reference.cs中的ConfigurationName,如下所示:

发件人: [System.ServiceModel.ServiceContractAttribute(Namespace = "http://TFBIC.RCT.BizTalk.Orchestrations", ConfigurationName = " RCTWebService.WcfService_TFBIC_RCT_BizTalk_Orchestrations")]

收件人: [System.ServiceModel.ServiceContractAttribute(Namespace = "http://TFBIC.RCT.BizTalk.Orchestrations", ConfigurationName = "TFBIC.RCT.HIP.Components.RCTWebService.WcfService_TFBIC_RCT_BizTalk_Orchestrations")]

2)然后还更改所有相关app.config中的“合同”值(对于.dll和.exe的),如下所示:

从:

<endpoint address = http://nxwtest08bt1.dev.txfb-ins.com/TFBIC.RCT.BizTalk.Orchestrations/WcfService_TFBIC_RCT_BizTalk_Orchestrations.svc binding =“wsHttpBinding”bindingConfiguration =“WSHttpBinding_ITwoWayAsync”contract =“RCTWebService.WcfService_TFBIC_RCT_BizTalk_Orchestrations”name =“WSHttpBinding_ITwoWayAsync “>

至:

<endpoint address = http://nxwtest08bt1.dev.txfb-ins.com/TFBIC.RCT.BizTalk.Orchestrations/WcfService_TFBIC_RCT_BizTalk_Orchestrations.svc binding =“wsHttpBinding”bindingConfiguration =“WSHttpBinding_ITwoWayAsync”contract =“TFBIC.RCT.HIP.Components。 RCTWebService.WcfService_TFBIC_RCT_BizTalk_Orchestrations“name =”WSHttpBinding_ITwoWayAsync“>

只是要清楚 - 我怎么知道完整命名空间是什么? 该程序的命名空间是TFBIC.RCT.HIP。 在其中,C#代码有一个额外的命名空间声明:

namespace RCTHipComponents

===============>>#4 票数:0

如果您发布了app.config文件,它可能会有所帮助,因为这种错误往往会指向<endpoint>块中的问题。 确保合约属性似乎适合您。

编辑:尝试完全限定合同价值; 使用完整的命名空间。 我认为这是必要的。

  ask by Serhat Ozgel translate from so

未解决问题?本站智能推荐: