Добавление аутентификации в заголовок безопасности в WCF для использования службы Metro WSIT
Я использую этот простой способ присоединить имя пользователя и пароль к заголовку запроса SOAP. Это прекрасно работает в границах Java, но я хочу иметь возможность вызывать его с моим клиентом WCF. Как мне это сделать?
Я пробовал следующий код, но он не включает учетные данные в заголовке:
wsClient.ClientCredentials.UserName.UserName = "Hello";
wsClient.ClientCredentials.UserName.Password = "World";
Заранее спасибо!
1 ответ
Решение
Это довольно ужасный нестандартный способ. Он использует пользовательские заголовки HTTP, поэтому вы не можете ожидать, что встроенный механизм WCF волшебным образом поддержит такой подход. Как WCF должен знать, что вы хотите добавить нестандартный HTTP-заголовок в HTTP-запрос (не SOAP-заголовок)?
Использовать этот:
var proxy = new YourServiceClient();
using (var scope = new OperationContextScope(proxy.InnerChannel))
{
var prop = new HttpRequestMessageProperty();
prop.Headers.Add("UserName", "Hello");
prop.Headers.Add("Password", "World");
OperationContext context = OperationContext.Current;
context.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = prop;
proxy.CallYourOperation();
}