MetadataResolver
This won't work:
var endpoints = MetadataResolver.Resolve(typeof(ICityService), new EndpointAddress("https://xxx/CityService.svc"));
Instead, it should point to the wsdl and better explicitly specify it's using HttpGet
var endpoints = MetadataResolver.Resolve(typeof(ICityService), new Uri("https://xxx/CityService.svc?wsdl"), MetadataExchangeClientMode.HttpGet );