asp.net-mvc-3 – 如何不使用Ninject的内核作为资源定位器
我对Ninject也很新,而且总体上也是DI.我使用NHibernate作为我的MVC应用程序的ORM,并对我的结果非常满意.也就是说,直到我从Ninject 2.1升级到2.2.
现在,由于使用Ninject的内核作为资源定位器,我在NinjectWebsiteApplication类中出现错误. 例: void NinjectWebsiteApplication_BeginRequest(object sender,System.EventArgs e) { ILogger logger = Kernel.Get<ILogger>(); logger.Debug(“**********REQUEST BEGIN****************”); logger.Debug(“**** URL = ” + Request.Url.AbsolutePath); } 例2: protected override void OnApplicationStarted() { var bootstrapper = Kernel.Get<Bootstrapper>(); bootstrapper.RegisterAllAreas(); AreaRegistration.RegisterAllAreas(); ...... (More stuff here,like AutoMapper mappings,etc.) ...... } * Bootstrapper类是我创建的一个类,我在其中注册路由,全局过滤器等. 在上面的两个示例中,我都收到有关Kernel.Get()函数的警告,其中说明了以下内容:
在对此进行了几次搜索后,普遍的共识是这是真的. 我正在努力解决这个问题,但是对于该怎么做却有些不知所措. 我加载了最新的Ninject.Web.Mvc NuGet包,它在App_Start文件夹下创建了NinjectMVC3静态类.我看到他们引用的是Microsoft.Web.Infrastructure.DynamicModuleHelper,但我没有看到它适合我正在尝试做什么. 如果有人有任何提示可以帮助我修复我的小混乱,我将非常感激! 解决方法
处理第一个问题的方法不是使用NinjectWebsiteApplication_BeginRequest事件,而是编写自定义全局操作过滤器:
public class LogActionFilterAttribute : ActionFilterAttribute { private readonly ILogger _logger; public LogActionFilterAttribute(ILogger logger) { _logger = logger; } public override void OnActionExecuting(ActionExecutingContext filterContext) { _logger.Debug("**********REQUEST BEGIN****************"); _logger.Debug("**** URL = " + filterContext.HttpContext.Request.Url.AbsolutePath); } } 然后在你的App_Start / NinjectMVC3.cs中: /// <summary> /// Load your modules or register your services here! /// </summary> /// <param name="kernel">The kernel.</param> private static void RegisterServices(IKernel kernel) { kernel.Bind<ILogger>().To<Logger>(); kernel.BindFilter<LogActionFilterAttribute>(FilterScope.Global,1); } 不要忘记使用Ninject.Web.Mvc.FilterBindingSyntax添加;为了带来BindFilter<>扩展方法进入范围. 因为您可以访问RegisterServices方法中的内核,这在应用程序启动时发生,您可以连接其他所有内容,包括您的引导程序,… 就你的Global.asax而言,你不再使用任何Ninject特定的东西.您不应该从NinjectApplication派生. WebActivator基础结构允许您使用单独的初始化方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 数组 – 带有int数组参数的EF ExecuteSqlCommand
- Asp XML解析
- asp.net-mvc – ASP.NET MVC:仅由其他操作调用的
- asp.net – 自定义控件变为通用的“UserControl”
- 如何通过GSM调制解调器从ASP.NET应用程序发送SMS
- asp.net – SqlConnection localhost用户名失败
- ASP.NET身份验证在自定义机票上滑动到期时间
- asp.net-mvc – 如何在ASP.NET MVC控制器中设置十
- ASP.NET:jQuery AJAX’data’param问题
- asp.net-mvc-3 – asp.net mvc,jquery mobile,ph