UPDATE用に定義されていませんパラメータなしのコンストラクタ - 私たちは始める前に、私は、この問題ASP.NET MVC 4 + Ninject MVC 3 =このオブジェクト
に対する解決策のリンクや説明のための私の答えをご覧ください。これは非常によくある質問で、問題なしで多くの月にNinjectを使用していたことは分かっていますが、今はそれが出てきています。また、いいえ、Googleと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;
}
}
そして、ここではNinjectWebCommon.cs RegisterServices
です方法:
kernel.Bind(typeof(IGroupPrincipalRepository)).ToConstructor(
c =>
new GroupPrincipalRepository(new PrincipalContext(ContextType.Domain, "?", "?", "?", "?"))).InSingletonScope();
、これは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 Ninject;
using Ninject.Web.Common;
public static class NinjectWebCommon {
private static readonly Bootstrapper bootstrapper = new Bootstrapper();
public static void Start() {
DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));
DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
bootstrapper.Initialize(CreateKernel);
}
public static void Stop() {
bootstrapper.ShutDown();
}
private static IKernel CreateKernel() {
var kernel = new StandardKernel();
kernel.Bind<Func<IKernel>>().ToMethod(ctx =>() => new Bootstrapper().Kernel);
kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
RegisterServices(kernel);
return kernel;
}
private static void RegisterServices(
IKernel kernel) {
kernel.Bind(typeof(IGroupPrincipalRepository)).ToConstructor(
c =>
new GroupPrincipalRepository(new PrincipalContext(ContextType.Domain, "", "", "", ""))).InSingletonScope();
}
}
}
UPDATE -
DependecyResolverを作成し、デフォルトを上書きしていますか? – Josh
私はそれが 'NinjectWebCommon.cs'ファイルがやっていることだと思っていました。もしそうでなければ、答えは"どこではない "と思います。もう一度、私の他のプロジェクトがこのように動作し、私が嘘をついていないことを確認するために二重と三重をチェックしているので、私の最後には混乱があります... – Gup3rSuR4c
NinjectMvcHttpApplicationPluginがNinject.MVCパッケージにあります'DependecyResolver' ...それはちょうどうまくいくでしょうか?どのようにNinject.MVCをインストールしましたか?ナゲットと? – nemesv