Я хотел бы преобразовать текущие настройки привязки HTTP / HTTPS WCF для использования двоичного кодирования сообщений, и мне нужно сделать это в коде, а не в конфигурации XML. AFAIK необходимо создать объект CustomBinding и установить надлежащие BindingElements, но я не могу понять, какие элементы мне следует использовать в моем сценарии.
Основные моменты в моей конфигурации WCF:
- использовать транспорт HTTP или HTTPS в зависимости от конфигурации (в app.config)
- использовать имя пользователя сообщения безопасности
- todo: добавить двоичную кодировку вместо текста по умолчанию
Мой текущий код для настройки привязки (работает, но без двоичной кодировки):
var isHttps = Settings.Default.wcfServiceBaseAddress.StartsWith("https://", StringComparison.InvariantCultureIgnoreCase);
var binding = new WSHttpBinding(isHttps ? SecurityMode.TransportWithMessageCredential : SecurityMode.Message);
binding.Security.Message.ClientCredentialType = MessageCredentialType.UserName;
Я пробовал этот код, но он не работает - я не знаю, как установить элемент защиты сообщения для безопасности имени пользователя:
var custBinding = new CustomBinding();
custBinding.Elements.Add(new BinaryMessageEncodingBindingElement());
//Transport Security (Not Required)
if (isHttps)
{
custBinding.Elements.Add(SecurityBindingElement.CreateUserNameForSslBindingElement());
}
//Transport (Required)
custBinding.Elements.Add(isHttps ?
new HttpsTransportBindingElement() :
new HttpTransportBindingElement());
Кто-нибудь знает, как это настроить? Я пытался найти похожую проблему / решение, но безуспешно ...