Could not find endpoint element with name and contract

23,091

Solution 1

If you added a second reference to a different service (ABCServiceV2) then I believe this will have generated a second service class for ABCServiceV2. The two classes will implement separate contracts (ABCService.IService and ABCService.IService1) so you won't be able to interchange the endpoints.

I believe you should be able to initialise your two service endpoints like so:

ABCService.ServiceClient ABCClient = new ServiceClient("ABCServiceV1");
ABCService.Service1Client ABCClient1 = new Service1Client("ABCServiceV2");

Solution 2

Even though this post is old and answered, the answer didn't help in my case. My problem was I generated the service client with the svcutil.exe tool, but didn't specify any namespace at all; and so the contract namespace name was generated as the target namespace of the schema document by default, yes total mess.

On the other hand I was trying to use the config file generated when a service reference is added to the project. The contract namespace in this file is ServiceReference1 (by default) or any other name you want, perfect storm! But all I had to do was to remove the namespace part from the FQN from the <endpoint>'s contract attribute, and the contract became visible to the CLR.

Hope this help others

Share:
23,091
ipoh
Author by

ipoh

Updated on July 15, 2020

Comments

  • ipoh
    ipoh almost 4 years

    I have added reference to a WCF service that has two end points. On adding the service the following get added to the Config file:

    <client>
      <endpoint name="ABCServiceV1" address="http://staging.ABCwebservices.com/ABC/Service.svc"
        binding="basicHttpBinding" bindingConfiguration="ABCServiceV1"
        contract="ABCService.IService"  />
      <endpoint name="ABCServiceV2" address="http://staging.ABCwebservices.com/ABC/Service.svc/20"
        binding="basicHttpBinding" bindingConfiguration="ABCServiceV2"
        contract="ABCService.IService1"  />
    </client>
    

    The code to create the client is as as below:

    ABCService.ServiceClient ABCClient = new ServiceClient("ABCServiceV2");
    

    However, I am getting an runtime error - "Could not find endpoint element with name 'ABCServiceV2' and contract 'ABCService.IService' in the ServiceModel client configuration section. This might be because no configuration file was found for your application, or because no endpoint element matching this name could be found in the client element."

    if i used ABCService.ServiceClient ABCClient = new ServiceClient("ABCServiceV1"); then everything works fine. But when using ABCServiceV2 it is trying to look for Contract - ABCService.IService - when it should be looking for - ABCService.IService1.

    How do i make it look for the correct contract?

  • ipoh
    ipoh over 11 years
    Thanks.. the issue was that i was using ServiceClient instead of Service1Client. The following code works without issues: ABCService.Service1Client ABCClient1 = new Service1Client("ABCServiceV2");
  • kdrapel
    kdrapel almost 2 years
    This is old, but this helped a lot. Was exactly my issue. Just used the name of the interface in the contract attribute, without namespace, and it worked....