1

可能重复:
将依赖项注入自定义模型绑定器并使用 InRequestScope 使用 Ninject

我正在尝试将 NHibernate 会话绑定到自定义模型绑定器:

由于自定义模型绑定器似乎是单例,我认为我需要关注线程安全。这是我当前的 IoC 代码:

kernel.Bind<ISession>().ToProvider<SessionProvider>().InRequestScope()
    .OnActivation(x => ServiceModelBinder.Service = kernel.Get<IServiceService>());

在我的活页夹中,我使用该ThreadStatic属性装饰了静态服务字段,以避免会话的并发问题。

这甚至是个好主意吗?

有没有更好的方法将每个请求范围的对象注入视图模型?还是我不应该担心它在纸上看起来有多丑,而只是从DependencyResolver需要的地方获取当前会话?

4

1 回答 1

2

远离 ASP.NET 中的 ThreadStaticAttribute - 唯一正确的方法是将内容放入HttpContext.Items.

这里的关键问题是您正在使用一个错误的假设 - 模型绑定器在请求之间共享。

于 2012-10-08T13:07:31.880 回答