更新-この問題の解決策のリンクと説明については、私の回答をご覧ください
始める前に、これは非常に一般的な質問であり、問題なく多くの衛星でNinjectを使用してきましたが、今では問題が発生し、修正方法がわかりません。また、いいえ、これまでのGoogleとSOの結果はどれも私を助けませんでした。
したがって、Windows Server2008R2上のVisualStudio2012の非常に非常に単純なプロトタイプASP.NETMVC4プロジェクトで実行されている次のコードについて考えてみます。
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を使用する他のプロジェクト(ただし、.NET4上のASP.NETMVC 3)の動作方法であり、私が知る限り、これがすべてを動作させるために必要なものです。それで、なぜ私は突然このオブジェクトに定義されたパラメーターのないコンストラクターを取得しないのですか?例外?
アップデート
完全な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();
}
}
}
更新-この問題の解決策のリンクと説明については、私の回答をご覧ください