一个拦截器 有 OnActionExecuting 和OnActionExecuted 两个方法,互相能共用一个变量吗 返回
C#论坛
老数据
2
1704
悬赏:0 飞吻
如
public class NeedCacheAttribute : ActionFilterAttribute, IActionFilter
{
... ...
private string cacheKey = "";
public override void OnActionExecuting(ActionExecutingContext context)
{
var request = context.HttpContext.Request;
string path = request.Path;
cacheKey=path;
}
public override void OnActionExecuted(ActionExecutedContext context)
{
CacheHelper.SetSliding(cacheKey, contentBytes, this.ServerCacheExpiration);
}
}然后我在控制器里需要缓存的接口(方法)加上 [NeedCache]
但发现,如果一个页面同是调用多个接口,
OnActionExecuting里的cacheKey 跟OnActionExecuted的 cacheKey 并不一至, 连接控制器里的一个接口测试没问题,同时连接多个接口发现不一至,有时是上一个的路径,不知什么问题,请高人指点!

热忱回答(2)
-
fate sta VIP0
2022/3/16用AsyncLocal实现共享
0 回复 -
goodgame36 VIP0
2022/3/16@fate sta: 果然可以,太感谢了!
0 回复