c# - C# Azure Redis 缓存 - 无法访问已处置的对象异常
问题描述
按照以下链接在 Web API 中实现 Redis 缓存。 https://docs.microsoft.com/en-us/azure/redis-cache/cache-dotnet-how-to-use-azure-redis-cache
缓存第一次正常工作,但因错误而失败
“无法访问已处置的对象”
...在随后的阅读中。
正如上面的博客中提到的,我在方法结束时处理连接并再次调用该方法抛出上述异常:lazyConnection.Value.Dispose();
还尝试将连接属性封装在不同的类中,如此处所述。但是由于它们被声明为静态的,因此在所有实例中保留相同的值,因此在处理连接时会在后续调用中导致相同的异常。
https://www.c-sharpcorner.com/article/using-redis-cache-in-web-api/
有几种方法可以解决这个问题:
不要释放连接并为所有调用重用相同的连接。
使缓存连接非静态,以便为每次调用创建和处理一个新连接。
这样做的正确方法是什么?
解决方案
您不应该在每次通话时都创建连接,这将非常低效。如果可能,还应避免静态连接。它可以使单元测试更难编写,并防止您在同一进程中拥有多个连接。
推荐阅读
- neo4j - Neo4j如何在全文搜索中索引所有节点和关系?
- sparql - 以人类的身份从维基数据中恢复化学元素的发现者?
- .net-core - 找不到 .NET 核心 SDK
- r - 突出显示不同列的两个值是否交替出现
- javascript - JWT 令牌刷新调用
- python - 为什么 python 脚本在手动运行时完美运行,但在通过任务计划运行时抛出 MemoryError?
- c# - 带有两个提交按钮并返回同一页面的 Razor 页面
- c++ - GetCurrentDirectory() 仅检索磁盘名称
- swiftui - App重启时如何使用方法?
- c++ - 如何解决用 C++ 编写的词法分析器的这个问题?