我可以将什么作为Web API存储用于请求的数据静态?

时间:2014-06-30 17:32:26

标签: asp.net-web-api

我有一系列Web API调用,它们都有一个客户端ID作为调用的属性 - 它是一个多租户情况。我不介意在我的所有路线中都有客户ID,但我不希望在每次通话中都有这个功能,而且我绝对不希望代码在每次通话中都能处理它。

此外,需要从堆栈中的多个层向静态对象访问数据。我试图使用Session状态作为存储,但它似乎在我需要拦截调用的阶段,即ActionFilter或MessageHandler阶段可用。无论如何,Session对象从来都不是这个数据的正确位置。

所以,我的问题 - 在Web API生命周期中,是否有一个我可以使用的商店对请求是静态的?如果有,我可以拦截动作过滤器中的调用,写入该存储,然后稍后从中读取。

TIA。

1 个答案:

答案 0 :(得分:2)

您可以使用Properties对象上的HttpRequestMessage属性来存储与当前请求相关的信息。

//
// Summary:
//     Gets a set of properties for the HTTP request.
//
// Returns:
//     Returns System.Collections.Generic.IDictionary<TKey,TValue>.
public IDictionary<string, object> Properties { get; }