gpt4 book ai didi

c# - WCF 错误 - 无法接收在客户端添加的 MessageHeaders

转载 作者:太空宇宙 更新时间:2023-11-03 20:34:26 25 4
gpt4 key购买 nike

我正在尝试在 WCF 中使用这个简单的代码:

客户端:

ServiceContractClient proxy = new ServiceContractClient();
using (OperationContextScope scope = new OperationContextScope((IContextChannel)proxy.InnerChannel))
{
MessageHeaders messageHeadersElement = OperationContext.Current.OutgoingMessageHeaders;
messageHeadersElement.Add(MessageHeader.CreateHeader("username", String.Empty, System.Security.Principal.WindowsIdentity.GetCurrent().Name));
}
var res = proxy.CallWCFMethod();

服务器端:

CallWCFMethod 实现了另一个方法 GetInfo()。 GetInfo() 的代码是:

MessageHeaders messageHeadersElement = OperationContext.Current.IncomingMessageHeaders;            
int AdidIndex = messageHeadersElement.FindHeader("username", string.Empty);
string ticket = messageHeadersElement.GetHeader<string>("username", string.Empty);

但是这段代码永远找不到我在客户端添加的Header“用户名”。有人可以指出我在这里做错了什么吗?

最佳答案

你的 OperationContextScope范围太小。将右大括号放在 proxy.CallWCFMethod() 之后,它应该可以工作:

ServiceContractClient proxy = new ServiceContractClient();
using (OperationContextScope scope = new OperationContextScope((IContextChannel)proxy.InnerChannel))
{
MessageHeaders messageHeadersElement = OperationContext.Current.OutgoingMessageHeaders;
messageHeadersElement.Add(MessageHeader.CreateHeader("username", String.Empty,
System.Security.Principal.WindowsIdentity.GetCurrent().Name));
var res = proxy.CallWCFMethod();
}

您可能需要进一步重构您的代码,因为您需要在 using 范围之外声明您的 res 变量。在这种情况下,您将必须显式键入变量。

关于c# - WCF 错误 - 无法接收在客户端添加的 MessageHeaders,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5712573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com