我正在考虑将 Subsonic 与多租户 ASP.net Web 应用程序一起使用。有多个数据库(每个客户端/实例一个)。用户使用其用户名的域后缀登录(例如 user@tenant1、user@tenant2)。
然后,自定义成员资格提供程序将确定用户正在使用哪个数据库,并针对它进行身份验证。webapp 中所有用户发起的调用都将包含在 SharedDbConnectionScope 调用中,但是我有一个关于缓存亚音速项目的问题。
基本上每个实例都会有一些很少更改的记录(搜索选项/配置)。我想在 Application_Start 事件中读取这些内容,并将它们缓存到 ApplicationState 中。
在 Application_Start 事件中,它将遍历每个客户端数据库,使用 SharedDbConnectionScope 连接到每个 DB,并创建这些缓存记录(例如 Application('tenant1_search_obj') = subsonic_object
当用户加载搜索页面时,它会检查用户所在的域,然后从缓存中检索该搜索选项。
这可行吗?我只是担心如果我缓存一个对象,当我从应用程序缓存中检索它时,它不会知道它使用什么连接,并且可能会提取错误的数据。
如果可能的话,我想避免把它放在会话对象中。