【发布时间】:2017-01-01 01:53:19
【问题描述】:
使用 Ninject 将相同的 HttpClient 对象注入应用程序中的所有 Controller 实例的推荐方法是什么?
目前,我正在按照 Adam Freeman 的 MVC 书注入一个 EntityFramework 数据库上下文,如下所示。但是,这会为每个控制器实例创建一个新的 dbContext,这对于 HttpClient 可能并不理想,因为 HttpClient 旨在在 MVC 应用程序中的所有控制器之间重用。
构造函数:
public class AccountController : Controller
{
MyDBContext dbContext = new MyDBContext();
public AccountController(MyDBContext context)
{
dbContext = context;
}
...
}
而忍者工厂如下:
/// Class based on Adam Freeman's MVC book to use dependency injection to create controllers
public class NinjectControllerFactory : DefaultControllerFactory
{
private IKernel ninjectKernel;
public NinjectControllerFactory()
{
ninjectKernel = new StandardKernel();
AddBindings();
}
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
return controllerType == null
? null
: (IController)ninjectKernel.Get(controllerType);
}
private void AddBindings()
{
ninjectKernel.Bind<MyDBContext>().ToSelf().InTransientScope();
}
}
【问题讨论】:
标签: asp.net-mvc ninject dotnet-httpclient