1
我已經使用Visual Studio 2012 RC編寫了MVC 4應用程序。它使用Ninject作爲依賴注入器,它在使用Azure模擬器的本地計算機上沒有任何問題。該應用程序的目標是.NET 4.0。然而,當我把它部署到Azure的作爲Web角色我得到這個異常:將Ninject部署到Azure的MVC 4應用程序時出錯
[MissingMethodException: No parameterless constructor defined for this object.]
System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) +0
System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache) +117
System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache) +247
System.Activator.CreateInstance(Type type, Boolean nonPublic) +106
System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType) +84
[InvalidOperationException: An error occurred when trying to create a controller of type 'Poller.WebUI.Controllers.QuestionsController'. Make sure that the controller has a parameterless public constructor.]
System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType) +247
System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName) +85
System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory) +270
System.Web.Mvc.<>c__DisplayClass6.<BeginProcessRequest>b__2() +66
System.Web.Mvc.<>c__DisplayClassb`1.<ProcessInApplicationTrust>b__a() +19
System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Func`1 func) +161
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +405
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +375
我不想參數的構造函數添加到QuestionsController,因爲我需要DB庫中存在,這是因爲通過一個構造函數參數。該參數應該由Ninject正確填寫。
有沒有人有任何想法可能是一個問題在這裏?
不幸的是,這並沒有幫助。仍然是例外。但是,謝謝你的嘗試! – jakubka 2012-07-13 13:18:38
好的 - 你/你可以遠程進入你的webrole實例並檢查以確保所有相關的ninject集合都正確部署? – Tommy 2012-07-13 14:02:29
我通過遠程桌面連接並檢查bin文件夾中的DLL。它對我來說很好。有Ninject.dll和許多其他集合。還有什麼可以導致雲計算和本地環境中的不同行爲? – jakubka 2012-07-13 21:31:59