Я пытаюсь создать инструмент для программного изменения файла app.config моей службы. Код примерно такой,
string _configurationPath = @"D:\MyService.exe.config";
ExeConfigurationFileMap executionFileMap = new ExeConfigurationFileMap();
executionFileMap.ExeConfigFilename = _configurationPath;
System.Configuration.Configuration config = ConfigurationManager.OpenMappedExeConfiguration(executionFileMap, ConfigurationUserLevel.None);
ServiceModelSectionGroup serviceModeGroup = ServiceModelSectionGroup.GetSectionGroup(config);
foreach (ChannelEndpointElement endpoint in serviceModeGroup.Client.Endpoints)
{
if (endpoint.Name == "WSHttpBinding_IMyService")
{
endpoint.Address = new Uri("http://localhost:8080/");
}
}
config.SaveAs(@"D:\MyService.exe.config");
Однако у меня проблема с изменением идентификатора конечной точки.
Я хочу что-то вроде:
<identity>
<userPrincipalName value="user@domain.com" />
</identity>
для моей конфигурации конечной точки, но когда я пытаюсь:
endpoint.Identity = new IdentityElement(){
UserPrincipalName = UserPrincipalNameElement() { Value = "user@domain.com" }
}
Сбой, потому что свойство endpoint.Identity и identityElement.UserPrincipalName доступно только для чтения (я не уверен почему, потому что entity.Address не только для чтения)
Есть ли способ обойти это ограничение и установить конфигурацию идентификации?