C#Azure Redis缓存-无法访问已处置对象异常

时间:2018-08-22 00:57:57

标签: c# azure caching redis stackexchange.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/

有两种方法可以解决此问题:

  1. 请勿处置该连接,并在所有呼叫中重复使用同一连接。

  2. 使Cache连接处于非静态状态,以便为每个调用创建和处置新连接。

正确的做法是什么?

1 个答案:

答案 0 :(得分:0)

您不应该在每次通话时都建立连接,这将导致效率低下。 如果可能,也应避免静态连接。它会使单元测试更难编写,并阻止您在同一过程中建立多个连接。