Адрес конечной точки изменения WCF во время выполнения

У меня есть мой первый пример WCF. У меня есть хост на веб-сайте, который имеет множество привязок. Из-за этого я добавил это в свой web.config.

 

Это моя привязка по умолчанию http: //id.web , которая работает со следующим кодом.

 EchoServiceClient client = new EchoServiceClient(); litResponse.Text = client.SendEcho("Hello World"); client.Close(); 

Теперь я пытаюсь установить адрес конечной точки во время выполнения. Даже если это тот же адрес вышеуказанного кода.

 EchoServiceClient client = new EchoServiceClient(); client.Endpoint.Address = new EndpointAddress("http://id.web/Services/EchoService.svc"); litResponse.Text = client.SendEcho("Hello World"); client.Close(); 

Ошибка, которую я получаю:

 The request for security token could not be satisfied because authentication failed. 

Укажите, как я могу изменить адрес конечной точки во время выполнения?

Дополнительно здесь моя конфигурация клиента, по просьбе Ладислава Мрнки

                    

    Таким образом, ваш конечный адрес, определенный в вашем первом примере, является неполным. Вы также должны определить идентификатор конечной точки, как показано в конфигурации клиента. В коде вы можете попробовать следующее:

     EndpointIdentity spn = EndpointIdentity.CreateSpnIdentity("host/mikev-ws"); var address = new EndpointAddress("http://id.web/Services/EchoService.svc", spn); var client = new EchoServiceClient(address); litResponse.Text = client.SendEcho("Hello World"); client.Close(); 

    Фактическая рабочая окончательная версия валамами

     EndpointIdentity spn = EndpointIdentity.CreateSpnIdentity("host/mikev-ws"); Uri uri = new Uri("http://id.web/Services/EchoService.svc"); var address = new EndpointAddress(uri, spn); var client = new EchoServiceClient("WSHttpBinding_IEchoService", address); client.SendEcho("Hello World"); client.Close(); 

    Это простой пример того, что я использовал для недавнего теста. Вы должны убедиться, что ваши параметры безопасности одинаковы на сервере и клиенте.

     var myBinding = new BasicHttpBinding(); myBinding.Security.Mode = BasicHttpSecurityMode.None; var myEndpointAddress = new EndpointAddress("http://servername:8732/TestService/"); client = new ClientTest(myBinding, myEndpointAddress); client.someCall(); 

    app.config

        

    программа

      Lisans.LisansSoapClient test = new LisansSoapClient("LisansSoap", "http://webservis.uzmanevi.com/Lisans/Lisans.asmx"); MessageBox.Show(test.LisansKontrol("","","")); 

    Мы храним наши URL-адреса в базе данных и загружаем их во время выполнения.

     public class ServiceClientFactory : ClientBase where TChannel : class { public TChannel Create(string url) { this.Endpoint.Address = new EndpointAddress(new Uri(url)); return this.Channel; } } 

    Реализация

     var client = new ServiceClientFactory().Create(newUrl); 
    Давайте будем гением компьютера.