gpt4 book ai didi

asp.net-mvc - 如何将 Ninject 与 HttpClient 一起使用

转载 作者:行者123 更新时间:2023-12-02 00:13:31 25 4
gpt4 key购买 nike

使用 Ninject 将相同的 HttpClient 对象注入(inject)到应用程序中的所有 Controller 实例的推荐方法是什么?

目前,我正在按照 Adam Freeman 的 MVC 书籍注入(inject) EntityFramework 数据库上下文,如下所示。但是,这会为每个 Controller 实例创建一个新的 dbContext,这对于 HttpClient 来说可能并不理想,因为 HttpClient 旨在在 MVC 应用程序中的所有 Controller 之间重用。

构造函数:

public class AccountController : Controller
{
MyDBContext dbContext = new MyDBContext();

public AccountController(MyDBContext context)
{
dbContext = context;
}

...
}

Ninject工厂如下:

/// 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();
}
}

最佳答案

您只需将配置更改为:

ninjectKernel.Bind<MyDBContext>().ToSelf().InRequestScope();

有关请求范围的更多信息,请阅读 this .

关于asp.net-mvc - 如何将 Ninject 与 HttpClient 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41412853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com