2014-07-17 17 views
5

我使用Unity3和MVC5,並且需要每個請求生命期管理器。但是,當我啓動Web應用程序時,服務器出現錯誤,提示「應用程序初始化後無法註冊模塊」。該問題是由DynamicModuleUtility引起的。如何解決這個問題呢?向MVC註冊UnityPerRequestHttpModule時出現異常5

public static void Start() 
{ 
    var container = UnityConfig.GetConfiguredContainer(); 

    FilterProviders.Providers.Remove(FilterProviders.Providers.OfType<FilterAttributeFilterProvider>().First()); 
    FilterProviders.Providers.Add(new UnityFilterAttributeFilterProvider(container)); 
    DependencyResolver.SetResolver(new UnityDependencyResolver(container)); 

    //use per request life time manager 
    DynamicModuleUtility.RegisterModule(typeof(UnityPerRequestHttpModule)); 
} 
+1

有沒有解決過這個問題? –

回答

1

對於MVC,您希望將它放在App_Start文件夾的類中。如果您將MVC的統一添加爲nuget包,我認爲它應該在該文件夾中創建一個名爲UnityMvcActivator的類。

0

我有一個類似的問題。我解決了這個由UnityConfig.cs刪除以下:

DynamicModuleUtility.RegisterModule(typeof(UnityPerRequestHttpModule)); 

,並添加這Unity.Mvc.Activator.cs

// TODO: Uncomment if you want to use PerRequestLifetimeManager 
      Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility.RegisterModule(typeof(UnityPerRequestHttpModule)); 
8

我有同樣的問題。我的問題是這樣的:

在我寫的GlobalAsax.Application_Start()方法中。

UnityMvcActivator.Start(); 

當我刪除它,一切正常。 當您使用UnityMvcActivator類,Start方法已經通過註釋稱爲:

[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(TrackingServer.App_Start.UnityWebActivator), "Start")] 

所以你不需要調用在Global.asax的UnityMvcActivator方法重新備案。

相關問題