相关疑难解决方法(0)

ASP.NET MVC 4 + Ninject MVC 3 =没有为此对象定义的无参数构造函数

更新 - 请查看我的答案,找到解决此问题的链接和说明

在我们开始之前,我知道这是一个非常常见的问题,我一直在使用Ninject进行许多卫星没有问题,但是现在它出现了,我无法找到解决办法.此外,不,迄今为止谷歌和SO的结果都没有帮助我.

因此,请考虑从Windows Server 2008 R2上的Visual Studio 2012中的非常非常非常简单的原型ASP.NET MVC 4项目上运行的以下代码:

public class DefaultController : Controller {
    private IGroupPrincipalRepository GroupPrincipalRepository { get; set; }

    [Inject]
    public DefaultController(
        IGroupPrincipalRepository groupPrincipalRepository) {
        this.GroupPrincipalRepository = groupPrincipalRepository;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是NinjectWebCommon.cs RegisterServices方法:

kernel.Bind(typeof(IGroupPrincipalRepository)).ToConstructor(
    c =>
        new GroupPrincipalRepository(new PrincipalContext(ContextType.Domain, "?", "?", "?", "?"))).InSingletonScope();
Run Code Online (Sandbox Code Playgroud)

现在,这就是我使用Ninject的其他项目(但是.NET 4上的ASP.NET MVC 3)的工作原理,据我所知,这是使一切正常运行所需要的.那么,为什么我突然得到为此对象定义的无参数构造函数.异常?

UPDATE

这是完整的NinjectWebCommon.cs文件:

[assembly: WebActivator.PreApplicationStartMethod(typeof(App_Start.NinjectWebCommon), "Start")]
[assembly: WebActivator.ApplicationShutdownMethodAttribute(typeof(App_Start.NinjectWebCommon), "Stop")]

namespace App_Start {
    using System;
    using System.DirectoryServices.AccountManagement;
    using System.Repositories.ActiveDirectory;
    using System.Web;
    using Microsoft.Web.Infrastructure.DynamicModuleHelper;
    using …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc ninject asp.net-mvc-4 visual-studio-2012

39
推荐指数
3
解决办法
2万
查看次数

使用Ninject.MVC3 nuget包正确设置ASP.NET MVC 3应用程序

我刚刚将Ninject.MVC3 nuget包(v2.2.2.0)添加到我的ASP.NET MVC 3应用程序中.

我似乎以两种不同的方式设置了我的ASP.NET MVC 3应用程序:

  1. 通过从NinjectHttpApplicationGlobal.asax.cs 继承
  2. 通过加载NinjectModule于RegisterServices在NinjectMVC3.cs方法

而现在我正试图弄清楚这里引用的博客条目.似乎在说还有另一种方法.一些关于.我迷路了.NinjectHttpApplicationModule

我该如何修改NinjectMVC.cs和Global.asax.cs文件?我现在拥有的是粘贴在下面.


NinjectMVC3.cs

[assembly: WebActivator.PreApplicationStartMethod(typeof(TennisClub.App_Start.NinjectMVC3), "Start")]
[assembly: WebActivator.ApplicationShutdownMethodAttribute(typeof(TennisClub.App_Start.NinjectMVC3), "Stop")]

namespace MyApp.App_Start
{
    using System.Reflection;
    using Microsoft.Web.Infrastructure.DynamicModuleHelper;
    using Ninject;
    using Ninject.Web.Mvc;
    using TennisClub.Configuration;

    public static class NinjectMVC3 
    {
        private static readonly Bootstrapper bootstrapper = new Bootstrapper();

        /// <summary>
        /// Starts the application
        /// </summary>
        public static void Start() 
        {
            DynamicModuleUtility.RegisterModule(typeof(OnePerRequestModule));
            DynamicModuleUtility.RegisterModule(typeof(HttpApplicationInitializationModule));
            bootstrapper.Initialize(CreateKernel);
        }

        /// <summary>
        /// Stops the application.
        /// …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc ninject nuget asp.net-mvc-3

2
推荐指数
1
解决办法
3940
查看次数