4
我有一个WCF服务,它需要将应用程序ID参数传递给每个服务调用。目前我公开的方法需要一个参数。我想尝试将这些信息推送到频道标题中。我的WCF使用Net.tcp托管。这里是我的客户代理代码:在通过频道传递标题值时使用WCF OperationContext
public class CustomerClient : ClientBase<ICustomerBrowser>, ICustomerBrowser
{
public Customer Get(string ApplicationID, string CustomerId)
{
try
{
using (OperationContextScope _scope = new OperationContextScope(this.InnerChannel))
{
MessageHeader _header = MessageHeader.CreateHeader("AppID", string.Empty, ApplicationId);
OperationContext.Current.OutgoingMessageHeaders.Add(_header);
return Channel.Get(ApplicationId, CustomerId);
// return Channel.Get(CustomerId);
}
}
}
}
(注释掉的线是我想要使用的前进)。
Server代码:
var _context = WebOperationContext.Current;
var h = _context.IncomingRequest.Headers;
在_context对象有包含我的头私有方法,但公开的_context.IncomingRequest.Headers我得到这个:
There is no HttpRequestMessageProperty on the incoming Message.
所以我的问题是,我是否受苦,因为我没有托管HTTP?有没有办法欺骗服务器让我通过添加一些伪HTTP头来访问这些头文件?或者我可以通过反思得到私人成员?
小学生的错误!谢谢,但是现在我面临的问题是看不到值被传递 - 我得到一个类型的System.ServiceModel.Channels.HeaderInfoCache + HeaderInfo的值,而不是MessageHeader ... –
尝试'_context.IncomingMessageHeaders.GetHeader(。 ..)'方法 –
完美!谢谢 –