c# Soap Client Issue - more than one endpoint configuration for th at contract was found

I am trying to write a simple c# console application to test the SOAP API from here: https://www.imailtest.co.uk/webservice/imail_api.asmx?wsdl (or https://www.imailtest.co.uk/webservice/imail_api.asmx to see the api methods)

So, I added this reference and tried to invoke 2 api methods (Authentiacate & ProcessPrintReadyPDF) calls on it and got this error:

Error : An endpoint configuration section for contract 'ServiceReference1.imail_ apiSoap' could not be loaded because more than one endpoint configuration for th at contract was found. Please indicate the preferred endpoint configuration sect ion by name.

Here's my C# Code:

static void Main(string[] args)
{
    // Anticipate Error
    try
    {
        // Generate SOAP Client
        ServiceReference1.imail_apiSoapClient soapClient = new ServiceReference1.imail_apiSoapClient();

        // Login
        Console.WriteLine("Authenticating");
        soapClient.Authenticate(iMailUser, iMailPass);

        // Proceed If PDF File Exists
        if (File.Exists(PDFFile))
        {
            // Upload PDF File To iMail
            Console.WriteLine("Uploading PDF File");
            soapClient.ProcessPrintReadyPDF(File.ReadAllBytes(PDFFile), "", true);

            // Test Complete
            Console.WriteLine("Done");
        }
        else
        {
            // Log Error
            Console.WriteLine("PDF File [{0}] Does Not Exists", PDFFile);
        }
    }
    catch (Exception ex)
    {
        // Log Error
        Console.WriteLine("Error : "+ ex.Message);
    }

    // End Test
    Console.WriteLine("Press any key to continue ...");
    Console.ReadKey();
}

This is how I added the service reference to my console app:

screenshot

Any ideas?


In your App.config you can see some thing like this

 <client>
      <endpoint address="https://www.imailtest.co.uk/webservice/imail_api.asmx "
        binding="basicHttpBinding" bindingConfiguration="xxxxxxxxxx"
        contract="xxxxxxxxxx" name="xxxxxxxxxxxxx" />
      <endpoint address="https://www.imailtest.co.uk/webservice/imail_api.asmx"
        binding="customBinding" bindingConfiguration="xxxxxxxxxxxxx"
        contract="xxxxxxxxxxx" name="xxxxxxxxxxxxx" />
  </client>

remove the second endpoint and now it should be like this

<client>
      <endpoint address="https://www.imailtest.co.uk/webservice/imail_api.asmx "
        binding="basicHttpBinding" bindingConfiguration="xxxxxxxxxxxxx"
        contract="xxxxxxxxxxxxxx" name="xxxxxxxxxxxxxxx" />      
  </client>

now run the code , hope your code works fine


I believe the problem is solved via defining the contract name like so (based on my screenshot):

ServiceReference1.imail_apiSoapClient soapClient = 
new ServiceReference1.imail_apiSoapClient("imail_apiSoap");

Now, I am no longer getting an error and the api appears to be working.