如何从流程中慢慢迁移到将Redis用作会话状态提供程序?

Nic*_* BL 7 asp.net asp.net-mvc session redis session-state-provider

实现我自己的会话状态提供程序是否一个坏主意,该提供程序根据redis会话提供程序和inproc会话提供程序之间的密钥有条件地进行切换?

我正在使用当前使用inproc会话提供程序的非常大的遗留asp.net应用程序.我们正在迁移到Redis作为会话状态提供程序,以便它继续部署,但是应用程序充满了会话滥用(例如,太大的对象,不可序列化的对象,我出于某种原因在那里看到了一个线程?).

我们计划慢慢纠正这些滥用行为,但在纠正之前我们无法真正转向redis.我希望我们可以慢慢地开始将可序列化安全密钥迁移到redis中,而滥用仍然存在于内存中,直到我们解决它们为止.

有没有人对此有任何建议?或者也许是从流程中迁移到流程外的其他建议?

谢谢!

Win*_*Win 4

在 ASP.NET Web Form 和 MVC 中,使用Redis会话状态只需在Web.config. 然后添加SerializableAttribute到类中。将其应用到类中没有副作用。

根据我几年前迁移到 Azure 时的经验,Session State 不值得慢慢迁移。

缓存则不同。它需要更改代码,因此我们最终实现了两个类 -MemoryCacheManagerRedisCacheManager,并在运行时在 IoC 容器中注册。然后注入ICacheManager到依赖类中。

  • `运行时中断` 是的,如果一个类引用不可序列化的类,它将抛出运行时异常。如果您想实现自定义会话状态提供程序,您可以查看 [RedisSessionStateProvider](https://github.com/Azure/aspnet-redis-providers) 源代码。 (2认同)