我在 c# .Net Framework 3.5 中有一个简单的 Web 客户端,它像这样调用 SOAP 服务 HelloWorld:
HelloService myservice = new HelloService();
string result = myservice.HelloWorld();
我正在使用一些通过请求授权 header 来增加基本安全性的中间件:“Authorization=Bearer 123456abcd”,它与 REST 服务一起使用,但我想使用上面的 .Net 客户端使用该服务...
如何将 header 添加到服务调用中?
是否存在类似于:myservice.addHeader("authorization=blah");
?
最佳答案
你应该使用 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);
关于c# - 将 header 添加到 .Net 3.5 WCF 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11836035/