C# I';我创建了一个WCF服务,现在我想从引用调用它,但为什么是InvalidOperationException?

C# I';我创建了一个WCF服务,现在我想从引用调用它,但为什么是InvalidOperationException?,c#,wcf,web-services,C#,Wcf,Web Services,我已经写了一个WCF服务。我已成功浏览该服务,它显示: You have created a service. 因此,我使用VisualStudio中的“添加服务引用”添加了对它的引用。然后我编写以下代码来使用它 ServiceReference1.VLSContentServiceClient client = new ServiceReference1.VLSContentServiceClient("VLSContentServiceEndpointBehaviour"); List&l

我已经写了一个WCF服务。我已成功浏览该服务,它显示:

You have created a service.
因此,我使用VisualStudio中的“添加服务引用”添加了对它的引用。然后我编写以下代码来使用它

ServiceReference1.VLSContentServiceClient client = new ServiceReference1.VLSContentServiceClient("VLSContentServiceEndpointBehaviour");
List<ServiceReference1.Category> cats = client.GetCategoriesByGET();
ServiceReference1.VLSContentServiceClient=newservicereference1.VLSContentServiceClient(“vlscontentserviceendpointbehavior”);
List cats=client.GetCategoriesByGET();
但是我得到了一个错误:

找不到具有的终结点元素 名称 “VLSCOntentServiceEndpointBehavior” 和合同 “ServiceReference1.IVLSContentService” 在ServiceModel客户端中 配置部分。这可能是 因为没有配置文件 为您的应用程序找到,或因为 没有与此名称匹配的端点元素 可以在客户端元素中找到

这毫无意义,因为参数“endPointConfigurationName”与我在服务中设置的参数匹配。以下是服务配置:

  <system.serviceModel>

    <services>
      <service behaviorConfiguration="VLSContentServiceBehaviour" name="VLSContentService">
        <endpoint address="" behaviorConfiguration="VLSContentServiceEndpointBehaviour" binding="webHttpBinding" contract="IVLSContentService"/>
      </service>
    </services>

    <behaviors>
      <serviceBehaviors>
        <behavior name="VLSContentServiceBehaviour">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>

      <endpointBehaviors>
        <behavior name="VLSContentServiceEndpointBehaviour">
          <webHttp/>
        </behavior>
      </endpointBehaviors>
    </behaviors>

  </system.serviceModel>


发生了什么事?

看起来你的合同不正确。你有:

contract="IVLSContentService"/>
它期望:

contract="ServiceReference1.IVLSContentService"/>
根据错误消息


您的端点地址也是空的。这不需要包含什么吗?

看起来您的合同不正确。你有:

contract="IVLSContentService"/>
它期望:

contract="ServiceReference1.IVLSContentService"/>
根据错误消息


您的端点地址也是空的。不需要包含某些内容吗?

您使用的是REST服务-无法使用添加服务引用创建此类服务的客户端。这仅适用于SOAP服务(没有webHttpBinding和webHttp行为)。而且,一旦使用SOAP服务,就不会将任何服务器端特性的名称传递给代理的构造函数。代理构造函数需要客户端配置中的客户端终结点名称


您正在使用REST服务-无法使用添加服务引用创建此类服务的客户端。这仅适用于SOAP服务(没有webHttpBinding和webHttp行为)。而且,一旦使用SOAP服务,就不会将任何服务器端特性的名称传递给代理的构造函数。代理构造函数需要客户端配置中的客户端终结点名称


创建客户端实例时,VLSContentServiceEndpointBehavior参数是端点的名称,而不是端点行为

改变

    <endpoint address="" behaviorConfiguration="VLSContentServiceEndpointBehaviour" binding="webHttpBinding" contract="IVLSContentService"/>


并创建一个服务客户端作为

ServiceReference1.VLSContentServiceClient=newservicereference1.VLSContentServiceClient(“客户”)


此外,您的地址丢失,这有点奇怪。

创建客户端实例时,VLSCOntentServiceEndpointBehavior参数是端点的名称,而不是端点行为

改变

    <endpoint address="" behaviorConfiguration="VLSContentServiceEndpointBehaviour" binding="webHttpBinding" contract="IVLSContentService"/>


并创建一个服务客户端作为

ServiceReference1.VLSContentServiceClient=newservicereference1.VLSContentServiceClient(“客户”)


您的地址也丢失了,这有点奇怪。

您的端点地址是空的吗?如何查找终结点?检查客户端配置..或尝试重新添加服务引用,可能是由于客户端和服务器配置不匹配而添加了一些更改..您的终结点地址为空?如何查找终结点?请检查客户端配置..或尝试重新添加服务引用,可能是由于客户端和服务器配置不匹配而添加了一些更改..添加本地服务引用时,终结点地址为空,例如您自己的解决方案中的一个。当您添加本地服务引用(例如您自己的解决方案中的一个)时,终结点地址为空。