Добавление аутентификации в заголовок безопасности в WCF для использования службы Metro WSIT - PullRequest
0 голосов
/ 04 октября 2011

Я использую этот простой способ присоединить имя пользователя и пароль к заголовку запроса SOAP.Это прекрасно работает в границах Java, но я хочу иметь возможность вызывать его с моим клиентом WCF.Как мне это сделать?

Я пробовал следующий код, но он не включает учетные данные в заголовке:

wsClient.ClientCredentials.UserName.UserName = "Hello";
wsClient.ClientCredentials.UserName.Password = "World";

Заранее спасибо!

1 Ответ

0 голосов
/ 04 октября 2011

Это довольно ужасный нестандартный способ. Он использует пользовательские заголовки 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();
}
...