2012-07-13 120 views
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正確填寫。

有沒有人有任何想法可能是一個問題在這裏?

回答

0

我也遇到了這個問題。我想在我們的例子中說,我們必須確定我們使用Windows 2008 R2作爲我們的MVC應用程序,而不是Windows 2008 SP1。您可以將您的配置文件更新爲OS="2"或只需登錄管理面板,選擇您的Web角色並單擊升級操作系統。不能確定這是否是您的問題,但它是爲我們在MVC 3網站上。

+0

不幸的是,這並沒有幫助。仍然是例外。但是,謝謝你的嘗試! – jakubka 2012-07-13 13:18:38

+0

好的 - 你/你可以遠程進入你的webrole實例並檢查以確保所有相關的ninject集合都正確部署? – Tommy 2012-07-13 14:02:29

+0

我通過遠程桌面連接並檢查bin文件夾中的DLL。它對我來說很好。有Ninject.dll和許多其他集合。還有什麼可以導致雲計算和本地環境中的不同行爲? – jakubka 2012-07-13 21:31:59

相關問題