Asp.net web api 对于请求的静态数据,我可以使用什么作为Web API存储?

Asp.net web api 对于请求的静态数据,我可以使用什么作为Web API存储?,asp.net-web-api,Asp.net Web Api,我有一系列的Web API调用,它们都将客户端id作为调用的属性—这是一种多租户的情况。我不介意在所有路由中都使用客户端id,但我不希望每次调用都使用客户端id,而且我绝对不希望代码在每次调用中都处理客户端id 此外,数据需要从堆栈中几层以下的静态对象访问。我试图使用会话状态作为存储,但在我需要拦截调用的阶段,即ActionFilter或MessageHandler阶段,它似乎不可用。无论如何,Session对象从来都不是这个数据的正确位置 所以,我的问题是——在Web API生命周期中,是否有

我有一系列的Web API调用,它们都将客户端id作为调用的属性—这是一种多租户的情况。我不介意在所有路由中都使用客户端id,但我不希望每次调用都使用客户端id,而且我绝对不希望代码在每次调用中都处理客户端id

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

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


TIA.

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

//
// Summary:
//     Gets a set of properties for the HTTP request.
//
// Returns:
//     Returns System.Collections.Generic.IDictionary<TKey,TValue>.
public IDictionary<string, object> Properties { get; }
//
//总结:
//获取HTTP请求的一组属性。
//
//返回:
//返回System.Collections.Generic.IDictionary。
公共IDictionary属性{get;}

是的,这就成功了。我可以通过以下代码静态访问当前请求:HttpContext.current.Items[“MS_HttpRequestMessage”]作为HttpRequestMessage-现在可以端到端工作。