Search code examples
wcfwcf-bindingwcf-client

WCF programmatically set endpoint address: No elements matching the key were found in the configuration element collection


I'm performing what I believed was a pretty basic task. We have an environment with multiple servers (DEV, TEST, PRODUCTION) and I'd like to programmatically change the service endpoint. To do this I am creating a new EndPointAddress and instantiating the client as:

BasicHttpBinding binding = new BasicHttpBinding("BasicHttpBinding_IMyService");
EndpointAddress endpoint = new EndpointAddress(new Uri("http://domain.name/myservice.svc"));
MyService.MyServiceClient client = new MyService.MyServiceClient(binding, endpoint);

I am receiving the following error.

No elements matching the key 'BasicHttpBinding_IMyService' were found in the configuration element collection.

I have included my app.config below but, as you can see, I do have the binding defined.

<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="BasicHttpBinding_IMyService" >
               <... removed directives for ease of reading ...>
            </binding>
        </basicHttpBinding>
    </bindings>
    <client>
        <endpoint address="http://domain.name/MyService.svc"
            binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IMyService"
            contract="MyService.IMyService" name="BasicHttpBinding_IMyService" />
    </client>
</system.serviceModel>

I'm sorry if this is a simple question but I haven't been able to identify the problem. I'll call it the 'late-Friday brain fog', and maybe you can call it 'easy points'?

Thanks!


Solution

  • The bindings in the Web.config of the WCF application and the app.config of the client application must match