.net 创建wcf web服务实例时发生InvalidOperationException
我有一个从类库引用的WCF Web服务。项目运行后,当从类库内部创建服务客户端对象时,我收到一条InvalidOperationException消息: 找不到引用协定的默认终结点元素 ServiceModel客户端中的“MyServiceReference.IMyService” 配置部分。这可能是因为没有配置文件 为应用程序找到,或者因为没有匹配的端点元素 可以在client元素中找到此合同 我用于创建实例的代码是:.net 创建wcf web服务实例时发生InvalidOperationException,.net,wcf,web-services,.net,Wcf,Web Services,我有一个从类库引用的WCF Web服务。项目运行后,当从类库内部创建服务客户端对象时,我收到一条InvalidOperationException消息: 找不到引用协定的默认终结点元素 ServiceModel客户端中的“MyServiceReference.IMyService” 配置部分。这可能是因为没有配置文件 为应用程序找到,或者因为没有匹配的端点元素 可以在client元素中找到此合同 我用于创建实例的代码是: myServiceClient = new MyServiceClient
myServiceClient = new MyServiceClient();
MyServiceClient从何处继承
System.ServiceModel.ClientBase
我如何解决这个问题
注意:我有一个单独的控制台应用程序,它只需创建相同的服务对象并对其进行调用,就可以正常工作。如果您发布app.config文件,可能会有所帮助,因为这种错误往往指向
块中的问题。确保合同属性对您来说是正确的
编辑:尝试完全限定您的合同价值;使用完整的命名空间。我认为这是必要的
下面是类库的我的app.config文件:
您应该将此配置设置放入主应用程序的配置文件中。NET应用程序(调用您的类库)使用它自己的配置文件中的数据,而不是库配置文件中的数据。我也遇到过类似的情况。我有一个叫做web服务的类库,然后我有一个叫做类库的.DLL的.EXE。我认为使用的是.EXE的配置文件,而不是.DLL的配置文件 但是正如Richard上面所说的,我必须完全限定名称空间。有点痛。 下面就是我所改变的。痛苦是我不得不在两个地方改变它, 一个在创建服务引用时生成的reference.cs中,另一个在配置文件中。因此,每次我更改web服务并执行“更新引用”时,我都必须再次更改C#代码 1) 您必须实际更改reference.cs中的ConfigurationName,如下所示: 发件人:
[System.ServiceModel.ServiceContractAttribute(命名空间=”http://TFBIC.RCT.BizTalk.Orchestrations,ConfigurationName=“RCTWebService.WcfService\u TFBIC\u RCT\u BizTalk\u编排”)]
收件人:[System.ServiceModel.ServiceContractAttribute(命名空间=”http://TFBIC.RCT.BizTalk.Orchestrations,ConfigurationName=“TFBIC.RCT.HIP.Components.RCTWebService.WcfService\u TFBIC\u RCT\u BizTalk\u编排”)]
2) 然后还将所有相关app.config(用于.dll和.exe)中的“contract”值更改如下:
发件人:
致:
只是想澄清一下——我怎么知道完整的名称空间是什么?
程序的名称空间是TFBIC.RCT.HIP。在这里面,C代码还有一个额外的
命名空间语句:
namespace RCTHipComponents
或者,您可以在代码中设置端点:
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);