KissLog 3.5.6 Search Keywords字段出现跨请求跨用户数据混杂问题
KissLog 3.5.6版本Search Keywords数据混杂问题解答
问题根因
你遇到的跨请求关键词混杂是KissLog 3.5.6及更早版本的已知缺陷,核心问题是该版本默认将Search Keywords存储在静态上下文中,没有和单个请求的生命周期做绑定,高并发场景下不同请求的关键词会被写入同一个静态集合,最终呈现出多个请求的关键词混杂在单条日志中的问题。
版本修复情况
该问题已在4.0.0及以上正式版本修复,官方调整了Keywords的存储逻辑,默认改为和当前HttpRequest生命周期绑定的作用域存储,每个请求的关键词仅会归属到当前请求对应的日志条目,不会再出现跨请求窜数据的情况。
临时解决方案(无法升级版本时可采用)
如果当前环境暂时无法升级KissLog版本,可以通过以下配置规避问题:
- 在ASP.NET MVC的请求结束管道事件(如
Application_EndRequest)中,手动调用KissLog.Keywords.Clear()方法清空当前上下文的关键词集合 - 检查全局过滤器、中间件中的关键词追加逻辑,避免在静态上下文无差别写入请求专属关键词(如用户ID、接口路径等)
升级后校验点
如果升级到4.0.0以上版本后仍出现该问题,可检查KissLog初始化配置,确认是否手动修改过KeywordsStorageType配置项为静态存储,改回默认的PerRequest模式即可。
内容的提问来源于stack exchange,提问作者René
相关产品推荐
相关产品推荐

