我需要在每个请求开始时提取几个标头值,并将它们放入一个 ClientContext 对象中,MEF 可以将该对象注入我的应用程序代码中。我正在使用 WCF Web API 的预览版 5,但看不到这样做的方法。
在“标准”WCF 中,我将创建一个实现 IExtension<OperationContext> 的类,并具有以下属性将它们连接在一起:
[Export(typeof(IClientContext)]
[PartCreationPolicy(CreationPolicy.NonShared)]
public static ClientContextExtension Current
{
get
{
var operationContext = OperationContext.Current;
if (operationContext == null)
return null;
var extension = operationContext.Extensions.Find<ClientContextExtension>();
if (extension == null)
{
extension = new ClientContextExtension();
operationContext.Extensions.Add(extension);
}
return extension;
}
}
自定义 DelegatingHandler 调用 ClientContextExtension.Current 并根据标头值设置属性。不幸的是,使用 WCF Web API,OperationContext.Current 始终为空!
我想不出一种方法来使它与 Web API 一起工作。任何帮助表示赞赏!