Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 为什么即使我用ninject注入依赖项,我也会得到MissingMethodException?_Asp.net_Asp.net Mvc_Dependency Injection_Asp.net Mvc 5_Ninject - Fatal编程技术网

Asp.net 为什么即使我用ninject注入依赖项,我也会得到MissingMethodException?

Asp.net 为什么即使我用ninject注入依赖项,我也会得到MissingMethodException?,asp.net,asp.net-mvc,dependency-injection,asp.net-mvc-5,ninject,Asp.net,Asp.net Mvc,Dependency Injection,Asp.net Mvc 5,Ninject,当我尝试访问“考试”视图时,会出现此错误。我不明白,因为一切似乎都很好 错误: [MissingMethodException:没有为此对象定义没有参数的构造函数。] System.RuntimeTypeHandle.CreateInstance(RuntimeType类型、Boolean publicOnly、Boolean noCheck、Boolean&canBeCached、RuntimeMethodHandleInternal&ctor、Boolean&bNeedSecurityChe

当我尝试访问“考试”视图时,会出现此错误。我不明白,因为一切似乎都很好

错误:

[MissingMethodException:没有为此对象定义没有参数的构造函数。] System.RuntimeTypeHandle.CreateInstance(RuntimeType类型、Boolean publicOnly、Boolean noCheck、Boolean&canBeCached、RuntimeMethodHandleInternal&ctor、Boolean&bNeedSecurityCheck)+0 System.RuntimeType.CreateInstanceSlow(布尔publicOnly、布尔skipCheckThis、布尔fillCache、StackScrawMark&​​堆叠标记)+122 System.RuntimeType.CreateInstanceDefaultCtor(布尔publicOnly、布尔skipCheckThis、布尔fillCache、StackScrawlMark&​​stackMark)+239 System.Activator.CreateInstance(类型,布尔非公共)+85 System.Activator.CreateInstance(类型)+12 System.Web.Mvc.DefaultControllerActivator.Create(RequestContext RequestContext,类型controllerType)+55

[InvalidOperationException:尝试创建“ConsultaH.MVC.Controllers.ExamesController”类型的控制器时出错。请确保该控制器具有无参数公共构造函数。] System.Web.Mvc.DefaultControllerActivator.Create(RequestContext RequestContext,类型controllerType)+178 System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext RequestContext,类型controllerType)+80 System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext RequestContext,String controllerName)+102 System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext、IController和controller、IControllerFactory和factory)+188 System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext,异步回调,对象状态)+50 System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext HttpContext,异步回调,对象状态)+48 System.Web.Mvc.MvcHandler.System.Web.IHTTPassynchandler.BeginProcessRequest(HttpContext上下文、AsyncCallback cb、Object extraData)+16 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+105 System.Web.HttpApplication.executesteppl(IExecutionStep步骤)+50 System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤,布尔值&同步完成)+163

我在NinjectWebCommon.cs中的代码

private static void RegisterServices(IKernel kernel)
{
            kernel.Bind(typeof(IAppServiceBase<>)).To(typeof(AppServiceBase<>));
            kernel.Bind<IPacienteAppService>().To<PacienteAppService>();
            kernel.Bind<IExameAppService>().To<ExameAppService>();
            kernel.Bind<ITipoExameAppService>().To<TipoExameAppService>();
            kernel.Bind<IConsultaAppService>().To<ConsultaAppService>();

            kernel.Bind(typeof(IServiceBase<>)).To(typeof(ServiceBase<>));
            kernel.Bind<IPacienteService>().To<PacienteService>();
            kernel.Bind<IExameService>().To<ExameService>();
            kernel.Bind<ITipoExameService>().To<TipoExameService>();
            kernel.Bind<IConsultaService>().To<ConsultaService>();

            kernel.Bind(typeof(IRepositoryBase<>)).To(typeof(RepositoryBase<>));
            kernel.Bind<IPacienteRepository>().To<PacienteRepository>();
            kernel.Bind<IExameRepository>().To<ExameRepository>();
            kernel.Bind<ITipoExameRepository>().To<TipoExameRepository>();
            kernel.Bind<IConsultaRepository>().To<ConsultaRepository>();

}
私有静态无效注册服务(IKernel内核)
{
Bind(typeof(IAppServiceBase)).To(typeof(AppServiceBase));
kernel.Bind().To();
kernel.Bind().To();
kernel.Bind().To();
kernel.Bind().To();
Bind(typeof(IServiceBase)).To(typeof(ServiceBase));
kernel.Bind().To();
kernel.Bind().To();
kernel.Bind().To();
kernel.Bind().To();
Bind(typeof(IRepositoryBase)).To(typeof(RepositoryBase));
kernel.Bind().To();
kernel.Bind().To();
kernel.Bind().To();
kernel.Bind().To();
}
我的ExamesController.cs课程:

public class ExamesController : Controller
{
        private readonly IExameAppService _exameApp;       

        public ExamesController(IExameAppService exameApp)
        {
            _exameApp = exameApp;            
        }

        // GET: Exame
        public ActionResult Index()
        {
            var exames = _exameApp.GetAll();
            var exameViewModel = Mapper.Map<IEnumerable<Exame>, IEnumerable<ExameViewModel>>(exames);            

            return View(exameViewModel);
        }
}    

公共类ExamesController:控制器
{
私有只读IEXamAppService_ExamApps;
公共exameApp控制器(IEXameApp服务exameApp)
{
_exameApp=exameApp;
}
//获取:Exame
公共行动结果索引()
{
var exames=_exameApp.GetAll();
var exameViewModel=Mapper.Map(exames);
返回视图(exameViewModel);
}
}    
我在方法CreateKernel()的类NinjectWebCommon.cs中放置了一个断点,并且在尝试后到达第一行时总是出现一个错误,该错误发生在运行时。见下面的代码:

private static IKernel CreateKernel()
{
            var kernel = new StandardKernel();
            try
            {
                kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel); // <= This line
                kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
                RegisterServices(kernel);
                return kernel;
            }
            catch
            {
                kernel.Dispose();
                throw;
            }
}
private静态IKernel CreateKernel()
{
var kernel=新的标准内核();
尝试
{

kernel.Bind().ToMethod(ctx=>()=>new Bootstrapper().kernel);//解决此错误所需的全部操作是卸载Ninject默认软件包并安装名为Ninject MVC5的软件包。

这可能会有所帮助