Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 创建wcf web服务实例时发生InvalidOperationException_.net_Wcf_Web Services - Fatal编程技术网

.net 创建wcf web服务实例时发生InvalidOperationException

.net 创建wcf web服务实例时发生InvalidOperationException,.net,wcf,web-services,.net,Wcf,Web Services,我有一个从类库引用的WCF Web服务。项目运行后,当从类库内部创建服务客户端对象时,我收到一条InvalidOperationException消息: 找不到引用协定的默认终结点元素 ServiceModel客户端中的“MyServiceReference.IMyService” 配置部分。这可能是因为没有配置文件 为应用程序找到,或者因为没有匹配的端点元素 可以在client元素中找到此合同 我用于创建实例的代码是: myServiceClient = new MyServiceClient

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

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

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

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);