WCF: Could not find default endpoint element that references contract ‘ICustomerService’ in the ServiceModel client configuration section.

Written on January 10, 2011

In den WCF-Beispielen von Microsoft wird der WCF-Client meißt so erstellt, dass die Service Reference im gleichen Projekt wie der Aufruf des generierten Service Clients liegt.

Resultat der Aktion: der Client funktioniert problemlos.

Will man hingegen den ServiceClient in eine eigene Assembly auslagern und diese in einem anderen Projekt referenzieren, erhält man unter Umständen folgende Exception:

Could not find default endpoint element that references contract 'ICustomerService' 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 contract could be found in the client element.

Der Grund hierfür liegt möglichweise in der fehlenden Namespace-Defintion des Service Clients, der standardmäßig nicht mitgeneriert wird.

Abhilfe schafft die Verwendung des namespace-Parameters beim Aufruf von svcutil.exe:

svcutil.exe http://myservices/CustomerService.svc /out:CustomerServiceClient.cs
/n:"http://myservices,MyProject.ServiceClients"

Wichtig ist, dass der WSDL/XML-Namespace (z.B. "http://myservices") dem Namespace der ServiceContract-Definition (via Attribut) entspricht, da sonst der CLR-Namespace nicht generiert wird.

DotNetKicks-DE Image