2

我正在使用 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)”不支持添加消息头。

我谷歌了很长时间,但对我来说没有结果。

谢谢。

4

1 回答 1

1

根据 MessageHeader 类的 MSDN 文档的第一行,我相信 MessageHeader 旨在用于 SOAP 标头和 SOAP 服务:

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。

如果您真的想在示例代码中设置用户名(我猜是密码),那么您可以使用 WebClient 的 Credentials 属性,而不是使用 Headers 属性设置授权标头。

于 2011-10-11T20:46:24.413 回答