Я создаю форму аутентификации, в которой пользователь должен определить IP-адрес службы WCF, имя пользователя и пароль.
Перед созданием подключения к сервису IP-адрес конечной точки, введенный пользователем, сохраняется в файле app.config. См. следующий код:
Configuration configFile = ConfigurationManager.
OpenExeConfiguration(ConfigurationUserLevel.None);
ServiceModelSectionGroup serviceSection = ServiceModelSectionGroup.
GetSectionGroup(configFile);
ClientSection clientSection = serviceSection.Client;
Uri uri = clientSection .Endpoints[0].Address;
UriBuilder builder = new UriBuilder(uri);
builder.Host = ServerIP;
clientSection .Endpoints[0].Address = builder.Uri;
configFile.Save(ConfigurationSaveMode.Modified);
При первом подключении к WCF все в порядке, то есть если IP правильный, он аутентифицирует пользователя, если нет - показывается соответствующее сообщение.
Но если IP-адрес конечной точки службы изменяется после первого подключения и воссоздается клиентский объект, он пытается подключиться к службе, используя предыдущий IP-адрес, а не новый.
Я попытался установить новую конечную точку непосредственно для обслуживания следующим образом:
ServiceClient client = new ServiceClient();
client.Endpoint.Address = new_uri_address;
но безуспешно.
Интересно, почему это происходит и как правильно назначить новую конечную точку клиенту WCF?