将标头添加到 .NET 3.5 WCF 客户端

本文关键字:WCF 客户端 NET 添加 | 更新日期: 2024-11-07 16:14:04

我在 c# .Net Framework 3.5 中有一个简单的 Web 客户端,它调用 SOAP 服务 HelloWorld,如下所示:

HelloService myservice = new HelloService();
string result = myservice.HelloWorld();

我正在使用一些中间件,通过请求授权标头来增加基本安全性:"授权=持有者 123456abcd",它适用于 REST 服务,但我想使用上面的 .Net 客户端使用该服务...

如何将标头添加到服务呼叫?是否存在类似的东西:myservice.addHeader("authorization=blah");

将标头添加到 .NET 3.5 WCF 客户端

你应该使用OperationContextScope

using (OperationContextScope scope = new OperationContextScope(wcfClient.InnerChannel))
      {
        MessageHeader header
          = MessageHeader.CreateHeader(
          "Service-Bound-CustomHeader",
          "http://Microsoft.WCF.Documentation",
          "Custom Happy Value."
          );
        OperationContext.Current.OutgoingMessageHeaders.Add(header);
        // Making calls.
        Console.WriteLine("Enter the greeting to send: ");
        string greeting = Console.ReadLine();
        //Console.ReadLine();
        header = MessageHeader.CreateHeader(
            "Service-Bound-OneWayHeader",
            "http://Microsoft.WCF.Documentation",
            "Different Happy Value."
          );
        OperationContext.Current.OutgoingMessageHeaders.Add(header);
        // One-way
        wcfClient.Push(greeting);
        this.wait.WaitOne();
        // Done with service. 
        wcfClient.Close();
        Console.WriteLine("Done!");
        Console.ReadLine();
      }

用于授权

var messageProperty = new HttpRequestMessageProperty();
messageProperty.Headers.Add(HttpRequestHeader.Authorization, AuthorizationHeader);