我有一个MVC3 和一个 WCF REST服务,它们都托管在 Azure 中,并且使用带有 Entity Framework 4.1 的 SQL Azure 作为 ORM。
我想引入一个分片方案来增加这个设置的可扩展性。
由于 Azure 是一个无状态托管环境,因此在我的系统中,每个请求都填充了一个用户 ID,我可以使用该用户 ID 来生成我的哈希,以创建一个指向所需数据库的连接字符串(按用户分片)。
目前我正在使用带有 WCF 和 MVC 扩展的 Ninject 将 EF DbContext 注入我的存储库。上下文生命周期在请求范围内(我的休息服务使用 aspnetcompatibility)。
我的问题是:如何拦截此注入并使用正确的连接字符串填充 DbContext?例如,在 WCF 中使用自定义 ServiceHostFactory?
我查看了 Ninject.Interception 扩展,但我无法弄清楚如何设置它以在激活我的服务和控制器之前拦截 HTTP 请求。
这将允许我在不重构现有代码的情况下使用分片。