добавить пользовательский заголовок для аутентификации безопасности в wcf - PullRequest
1 голос
/ 09 октября 2011

Я использую webHttpBinding для предоставления услуг wcf и возврата формата JSON, я хочу сделать некоторую аутентификацию безопасности в заголовке, например:

CustomerServiceClient client = new CustomerServiceClient();

            using (OperationContextScope scope = new OperationContextScope(client.InnerChannel))
            {
                MessageHeader header = MessageHeader.CreateHeader("username", "http://tempuri.org", "testuser");

                OperationContext.Current.OutgoingMessageHeaders.Add(header);

            }

но я получил это сообщение об ошибке: Версия конверта 'EnvelopeNone (http://schemas.microsoft.com/ws/2005/05/envelope/none)' не поддерживает добавление заголовков сообщений.

Я долго гуглю, но для меня ничего не получается.

спасибо.

1 Ответ

1 голос
/ 12 октября 2011

Я считаю, что MessageHeader предназначен для заголовков SOAP и служб SOAP в соответствии с первой строкой документации MSDN для класса MessageHeader:

http://msdn.microsoft.com/en-us/library/system.servicemodel.channels.messageheader.aspx

Поскольку вы используете webHttpBinding, я полагаю, вы создаете службу REST, а не службу SOAP. В этом случае вы должны использовать класс System.Net.WebClient:

http://msdn.microsoft.com/en-us/library/system.net.webclient.aspx

или аналогичный и установите заголовок, используя его свойство Headers. Чтобы было ясно, это установит заголовки HTTP, а не заголовки сообщений SOAP, так как вы не используете SOAP.

Если вы действительно хотите установить имя пользователя (и я предполагаю пароль), как в вашем примере кода, тогда вы можете использовать свойство Credentials WebClient, а не устанавливать заголовок авторизации, используя свойство Headers.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...