首页 > 解决方案 > 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/

有几种方法可以解决这个问题:

  1. 不要释放连接并为所有调用重用相同的连接。

  2. 使缓存连接非静态,以便为每次调用创建和处理一个新连接。

这样做的正确方法是什么?

标签: c#azurecachingredisstackexchange.redis

解决方案


您不应该在每次通话时都创建连接,这将非常低效。如果可能,还应避免静态连接。它可以使单元测试更难编写,并防止您在同一进程中拥有多个连接。


推荐阅读