可能重复:
Inject a dependency into a custom model binder and using InRequestScope using Ninject
我正在尝试将NHibernate会话绑定到自定义模型绑定器:
由于自定义模型绑定器似乎是单例,我认为我需要关注线程安全性。这是我目前的IoC代码:
kernel.Bind<ISession>().ToProvider<SessionProvider>().InRequestScope()
.OnActivation(x => ServiceModelBinder.Service = kernel.Get<IServiceService>());
在我的活页夹中,我使用ThreadStatic
属性修饰了静态服务字段,以避免会话出现并发问题。
这是一个好主意吗?
是否有更好的方法将每个请求作用域对象注入视图模型?或者我应该不担心它在纸上看起来有多丑,只需从DependencyResolver
获取当前会话?
答案 0 :(得分:2)
远离ASP.NET中的ThreadStaticAttribute - 唯一正确的方法是将内容放入HttpContext.Items
,但是在你去之前总是有很多更好的方法可以尝试
像这样的低级别。
这里的关键问题是你正在做一个错误的假设 - 模型绑定在请求之间共享。