我有Web API 2(MVC)项目。调用任何方法时,都需要X-API-Key标头。 X-API-Key用于区分UAT和PROD /网站和移动应用程序调用。 我有一个消息处理程序,该消息处理程序在调用到达目标方法之前验证X-API-Key并设置每个用户的全局变量,因此在发送任何响应之前,这些变量可用于原始调用中的任何控制器。 主要要求是每个用户的全局变量对于每个用户应该是唯一的,并且不能在方法调用之间共享。 因此,静态变量将不起作用,还尝试使用HttpContext.Current.Cache,它也不起作用。有什么建议吗?
答案 0 :(得分:0)
感谢大家的关注。
我相信我找到了想要的东西: HttpContext.Current.Items
“与Session集合不同,您放置在Items集合中的任何内容都只会在单个Web请求期间存在,而Session集合会在每个用户继续发出请求的情况下保留其内容。” >
这是我现在要使用的:
在SharedLibrary方法中设置“每用户全局变量”:
HttpContext.Current.Items.Add("EnableDebugMode", true);
使用SharedLibrary方法获取“每用户全局”变量:
public static bool GetEnableDebugMode()
{
return HttpContext.Current.Items.Contains("EnableDebugMode") ? (bool)HttpContext.Current.Items["EnableDebugMode"] : false;
}
在CustomersController中使用“全局每用户”变量:
catch (Exception e)
{
_r.ResponseCode = "002";
if (UserSession.GetEnableDebugMode())
{
_r.ResponseBody = e.InnerException == null ? e.Message : e.Message + " " + e.InnerException.Message;
}
else
{
_r.ResponseBody = e.Message;
}
return Content(HttpStatusCode.InternalServerError, _r);
}