使用MVC 5注册UnityPerRequestHttpModule时出现异常

Bar*_*tta 6 asp.net-mvc unity-container

我将Unity3与MVC5一起使用,并且每个请求都需要终身经理.但是,当我启动Web应用程序时,我收到服务器错误,说"在应用程序初始化后无法注册模块".问题是由DynamicModuleUtility引起的.如何解决这个问题呢?

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));
}
Run Code Online (Sandbox Code Playgroud)

eli*_*lif 8

我有同样的问题.我的问题是这样的:

在我编写的GlobalAsax.Application_Start()方法中.

UnityMvcActivator.Start();
Run Code Online (Sandbox Code Playgroud)

当我删除它时,一切正常.使用UnityMvcActivator类时,已通过注释调用Start方法:

[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(TrackingServer.App_Start.UnityWebActivator), "Start")]
Run Code Online (Sandbox Code Playgroud)

因此,您无需再次调用Global.asax文件中的UnityMvcActivator方法.


Jim*_*Jim 1

对于 MVC,您需要将其放入 App_Start 文件夹中的类中。如果您将 MVC Unity 添加为 nuget 包,我认为它应该在该文件夹中创建一个名为 UnityMvcActivator 的类。