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(。 ..)'方法 –
完美!謝謝 –