0

Ninjectを使用してASP.NETMVC3アプリケーションを実行すると、完全に機能しますが、IISに展開すると、次のエラーが発生します。

[NullReferenceException: Object reference not set to an instance of an object.]
   Betolto.Controllers.DataInputController..ctor() +47
   DynamicInjector7922fd15a4fb4caba8ffb4cc7f18cbcf(Object[] ) +42
   Ninject.Activation.Providers.StandardProvider.Create(IContext context) +489
   Ninject.Activation.Context.Resolve() +177
   Ninject.<>c__DisplayClass10.<Resolve>b__c(IBinding binding) +30
   System.Linq.WhereSelectEnumerableIterator`2.MoveNext() +151
   System.Linq.Enumerable.SingleOrDefault(IEnumerable`1 source) +4222965
   Ninject.Web.Mvc.NinjectDependencyResolver.GetService(Type serviceType) +64
   System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType) +51
>
[InvalidOperationException: An error occurred when trying to create a controller of type 'Betolto.Controllers.DataInputController'. Make sure that the controller has a parameterless public constructor.]
   System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType) +182
   System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType) +80
   System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName) +74
   System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory) +232
   System.Web.Mvc.<>c__DisplayClass6.<BeginProcessRequest>b__2() +49
   System.Web.Mvc.<>c__DisplayClassb`1.<ProcessInApplicationTrust>b__a() +13
   System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f) +7
   System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action) +22
   System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Func`1 func) +124
   System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state) +98
   System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, Object state) +50
   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) +16
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8969412
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +184

インターネットで検索しましたが、問題の解決策が見つかりませんでした。私はすべての答えに感謝します。

4

1 に答える 1

1

スタックトレースから、問題はコントローラー(Betolto.Controllers.DataInputController)コンストラクター内にあります。したがって、NInjectはおそらく正しく機能しています。私の推測では、エラーは他の何かから発生します。開発環境と本番環境の違いは、構成ファイルにパラメーターがないか、データベースデータの違いである可能性があります。ロギングを追加して、どの行とどのオブジェクトが例外の原因となっているnullオブジェクトであるかを正確に把握できるようにします。デバッグを高速化するデバッガーを本番コードにアタッチできる場合。

于 2012-11-04T10:47:10.547 に答える