我有一系列Web API调用,它们都有一个客户端ID作为调用的属性 - 它是一个多租户情况。我不介意在我的所有路线中都有客户ID,但我不希望在每次通话中都有这个功能,而且我绝对不希望代码在每次通话中都能处理它。
此外,需要从堆栈中的多个层向静态对象访问数据。我试图使用Session状态作为存储,但它似乎在我需要拦截调用的阶段,即ActionFilter或MessageHandler阶段可用。无论如何,Session对象从来都不是这个数据的正确位置。
所以,我的问题 - 在Web API生命周期中,是否有一个我可以使用的商店对请求是静态的?如果有,我可以拦截动作过滤器中的调用,写入该存储,然后稍后从中读取。
TIA。
答案 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; }