C# 在我的Mvc项目中使用Ninject.Web.Mvc注入失败
我有一门课是这样的:C# 在我的Mvc项目中使用Ninject.Web.Mvc注入失败,c#,asp.net-mvc,ninject.web.mvc,C#,Asp.net Mvc,Ninject.web.mvc,我有一门课是这样的: public class UrlHelperFacade:UrlHelper { public UrlHelperFacade(RequestContext requestContext) : base(requestContext) { } public UrlHelperFacade(RequestContext requestContext, RouteCollection routeCollection):base(reques
public class UrlHelperFacade:UrlHelper
{
public UrlHelperFacade(RequestContext requestContext) : base(requestContext)
{
}
public UrlHelperFacade(RequestContext requestContext, RouteCollection routeCollection):base(requestContext,routeCollection)
{
}
public new virtual bool IsLocalUrl(string url)
{
return base.IsLocalUrl(url);
}
}
我使用NInject在global.asax中绑定这个类:
protected override IKernel CreateKernel()
{
var kernel = new StandardKernel();
kernel.Bind<UrlHelper>().To<UrlHelperFacade>();
return kernel;
}
protectedoverride IKernel CreateKernel()
{
var kernel=新的标准内核();
kernel.Bind().To();
返回内核;
}
然后我在控制器中注入:
[注入]
公共新UrlHelperFacade Url{get;set;}
当我使用属性Url时,我可以获取实例,但调用方法时失败:“IsLocalUrl”
以下是错误:
对象引用未设置为对象的实例
堆栈跟踪:
位于System.Web.Mvc.UrlHelper.IsLocalUrl(字符串url)
位于d:\Projects\GCRIS\SRC\Web\RISLite\CARESTREAM.RISGC.RISLite.Framework.UrlHelperFacade.IsLocalUrl中的CARESTREAM.RISGC.RISLite.Framework.UrlHelperFacade(字符串url):第23行
在d:\Projects\GCRIS\SRC\Web\RISLite\CARESTREAM.RISGC.RISLite.Controllers.AccountController.LogOn中的CARESTREAM.RISGC.RISLite.Controllers.AccountController.LogOn(LogOnModel模型,字符串returnUrl):第76行
在lambda_方法中(闭包、控制器基、对象[])
位于System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller,Object[]参数)
位于System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext ControllerContext,IDictionary`2参数)
位于System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext ControllerContext,ActionDescriptor ActionDescriptor,IDictionary`2参数)
在System.Web.Mvc.ControllerActionInvoker.c_DisplayClass13.b_10()中
位于System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter筛选器、ActionExecutingContext预文本、Func`1 continuation)
我注意到requestContext的成员HttpContext和RouteData为null。这就是处理这件事的方法吗?我只想让UrlHelper做一个单元测试。为什么不使用扩展方法呢?另外,因为您的
stacktrace
根本没有提到Ninject
,请发布所有与Ninject/Binding/dependcyresolving相关的global.asax
函数。这里有代码:公共类mvcapapplication:NinjectHttpApplication{protectedoverride IKernel CreateKernel(){var kernel=new standardckernel();kernel.Bind().ToMethod(ctx=>()=>new Bootstrapper().Kernel);Kernel.Bind().To();Kernel.Bind().To();return Kernel;}