惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Attack and Defense Labs
Attack and Defense Labs
The GitHub Blog
The GitHub Blog
C
Check Point Blog
博客园_首页
MongoDB | Blog
MongoDB | Blog
N
Netflix TechBlog - Medium
F
Full Disclosure
Microsoft Security Blog
Microsoft Security Blog
爱范儿
爱范儿
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
G
GRAHAM CLULEY
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Threat Research - Cisco Blogs
C
Cybersecurity and Infrastructure Security Agency CISA
V
Vulnerabilities – Threatpost
K
Kaspersky official blog
博客园 - 司徒正美
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
Project Zero
Project Zero
云风的 BLOG
云风的 BLOG
Cisco Talos Blog
Cisco Talos Blog
Know Your Adversary
Know Your Adversary
雷峰网
雷峰网
V
V2EX - 技术
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Spread Privacy
Spread Privacy
罗磊的独立博客
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
Security Affairs
SecWiki News
SecWiki News
Schneier on Security
Schneier on Security
O
OpenAI News
Jina AI
Jina AI
PCI Perspectives
PCI Perspectives
Cyberwarzone
Cyberwarzone
Y
Y Combinator Blog
Apple Machine Learning Research
Apple Machine Learning Research
B
Blog RSS Feed
I
InfoQ
D
Docker
P
Palo Alto Networks Blog
Recorded Future
Recorded Future
M
MIT News - Artificial intelligence
博客园 - Franky
B
Blog
Scott Helme
Scott Helme
博客园 - 叶小钗
D
DataBreaches.Net

博客园 - 永恒一生

.net 7 .net 6 visual studio 智能提示汉化翻译中文版 dotnet 7 来帮助我们使用 asp.net core开发的时候,一些参数或者方法可以更好的使用! 百度的文心一格给我画的画,是不是我表达有问题?? .net 框架引用asp.net core某些包提示已弃用,此包是旧版本且不再受到维护,因此已被弃用。如何处理! .net core webApi接受不到UploadFile的文件? sql server在我把JSON数据存入到字段的时候中文乱码问题 git 语句操作命令 IIS设置了歌词为text/plain格式,但是.net core项目还是访问不了,404,是应.net core里没有支持 System.Net.Sockets.SocketException:“在其上下文中,该请求的地址无效。” AssetStudio/UnityStudio Error while validating the service descriptor 'ServiceType IOptions取bind值,总是取不到 dapper执行存储过程找不到 查询当前数据查询锁死语句SP_WHO3 sqlserver 统计数据库每个数据表的条数 sqlserver整理表碎片 vs 2022 key 你懂的 用宝塔搭建IIS网站的目录虚拟用户该如何添加到其他目录? HTTP Error 500.0 - ASP.NET Core IIS hosting failure (in-process) .net core 5.0部署到IIS出现500.30错误,
.net 7 获取所有缓存键的问题?
永恒一生 · 2022-11-30 · via 博客园 - 永恒一生
这里是群友提供听说是issue提的问题,高手回答的。

var

coherentState = _cache.GetType().GetField("_coherentState", BindingFlags.NonPublic | BindingFlags.Instance); var coherentStateValue = coherentState.GetValue(_cache); var entriesCollection = coherentStateValue.GetType().GetProperty("EntriesCollection", BindingFlags.NonPublic | BindingFlags.Instance); var entriesCollectionValue = entriesCollection.GetValue(coherentStateValue) as ICollection; var keys = new List<string>(); if (entriesCollectionValue != null) { foreach (var item in entriesCollectionValue) { var methodInfo = item.GetType().GetProperty("Key"); var val = methodInfo.GetValue(item); keys.Add(val.ToString()); } } return keys;

由于.net 7源码改变了,_entries外面又套了一层_coherentState,致使无法获取所有键值。

通过查看源码我自己修改了如下代码:

       var ggt = _cache.GetType();
           var _coherentStates = ggt.GetRuntimeFields(); 
            var keys = new List<string>();
            foreach (var f in _coherentStates)
            {
                if(f.Name == "_coherentState")
                {
                   var ftype = f.FieldType;
                    var ssss= ftype.GetRuntimeFields();
                   foreach(var ss in ssss)
                    {
                        if (ss.Name == "_entries")
                        {
                            var eee = ss.GetValue(f.GetValue(_cache));
                            if (eee != null)
                            { 
                                var cacheItems = eee as IDictionary;
                                if (cacheItems == null) return keys;
                                foreach (DictionaryEntry cacheItem in cacheItems)
                                {
                                    if (!string.IsNullOrEmpty(key))
                                    {
                                        if (cacheItem.Key.ToString().Contains(key))
                                        {
                                            keys.Add(cacheItem.Key.ToString());
                                        }
                                    }
                                    else
                                    {
                                        keys.Add(cacheItem.Key.ToString());
                                    }
                                }
                            }
                        }
                    }
                }
            }
         
            return keys;