asp.net-mvc – 如何将Ninject与HttpClient一起使用
发布时间:2020-12-16 09:43:22 所属栏目:asp.Net 来源:网络整理
导读:使用Ninject将相同的HttpClient对象注入应用程序中的所有Controller实例的推荐方法是什么? 目前,我正按照Adam Freeman的MVC书籍注入EntityFramework数据库上下文,如下所示.但是,这会为每个控制器实例创建一个新的dbContext,这可能不适合HttpClient,因为Http
使用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; } ... } Ninject Factory如下: /// 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(); } } 解决方法
谢谢史蒂文.目前,我发现以下工作.我在NinjectController中创建了一个静态HttpClient属性,并在单例范围内将其绑定为常量.
Daniel’s book有助于更好地理解Ninject.
/// Class based on Adam Freeman's MVC book to use dependency injection to create controllers public class NinjectControllerFactory : DefaultControllerFactory { private IKernel ninjectKernel; private static HttpClient WebAPIClient; // added public NinjectControllerFactory() { ninjectKernel = new StandardKernel(); WebAPIClient = new HttpClient(); // added WebAPIClient.BaseAddress = new Uri("http://localhost:1153"); // added 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<HttpClient>().ToConstant(WebAPIClient).InSingletonScope(); // added } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- asp.net-mvc-2 – 如何在局部视图中获取与父操作
- asp.net – AppendHeader是否与AddHeader完全相同
- ASP.NET Core中Server.Transfer的替代方案
- asp.net-mvc – 从/到POCO对象的knockoutjs映射
- 使用asp.net C#从代码隐藏中读取HTML元素
- asp.net – 强制RadComboBox下拉方向
- 使用ASP.NET C#中的文件填充树视图
- 依赖性 – 安装RavenDb Embedded的Nuget依赖性错
- .net-core – WebRTC和Asp.NetCore
- asp.net – MathJax – 文件无法加载:/extensio
热点阅读