为了账号安全,请及时绑定邮箱和手机立即绑定

在 MVC 5 Web 应用程序中管理每个 http 请求生命周期的问题

在 MVC 5 Web 应用程序中管理每个 http 请求生命周期的问题

C#
心有法竹 2021-11-28 20:05:38
我正在尝试为每个 HTTP 请求实现我的实例的生命周期(在 Unity DI 中)。但是,当 unity 尝试注册实例时,我不断收到错误消息:“ PerRequestLifetimeManager 只能在 HTTP 请求的上下文中使用。此错误的可能原因是在非 ASP.NET 应用程序上使用生命周期管理器,或使用它在一个与适当的同步上下文无关的线程中。 ”我在 UnityMvcActivator.cs 中注册了 UnityPerRequestHttpModule,如下所示public static void Start()         {            FilterProviders.Providers.Remove(FilterProviders.Providers.OfType<FilterAttributeFilterProvider>().First());            FilterProviders.Providers.Add(new UnityFilterAttributeFilterProvider(UnityConfig.Container));            DependencyResolver.SetResolver(new UnityDependencyResolver(UnityConfig.Container));            // TODO: Uncomment if you want to use PerRequestLifetimeManager            Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility.RegisterModule(typeof(UnityPerRequestHttpModule));        }这就是我的 UnityConfig.cs 的样子public static void RegisterTypes(IUnityContainer container)        {            // TODO: Register your type's mappings here.            container.RegisterInstance<OITTimeSheetDBContextFactory>(new OITTimeSheetDBContextFactory(), new PerRequestLifetimeManager());            container.RegisterInstance<UserContext>(new UserContext(container.Resolve<OITTimeSheetDBContextFactory>()), new PerRequestLifetimeManager());        }
查看完整描述

1 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

使用RegisterType为每解决实例化:


public static void RegisterTypes(IUnityContainer container)

{

    container.RegisterType<OITTimeSheetDBContextFactory>(new PerRequestLifetimeManager());

    container.RegisterType<UserContext>(new PerRequestLifetimeManager());

}

RegisterInstance 将有效地定义一个单例并始终返回对象的相同实例


查看完整回答
反对 回复 2021-11-28
  • 1 回答
  • 0 关注
  • 186 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信