gpt4 book ai didi

asp.net - 用于 asp.net 进程的 Windsor 复合生活方式

转载 作者:行者123 更新时间:2023-12-02 07:45:42 26 4
gpt4 key购买 nike

我有一个 asp.net 进程,它也使用来自服务总线 (MassTransit) 的消息。对于网络请求,我的数据库 session 是通过 PerWebRequest 生活方式解决的。

但是当进程使用来自 MassTransit 的消息时,我需要数据库 session 有另一种生活方式,因为没有可用的 HttpContext。

我做了这个:

    public class PerRequestLifeStyleManager : ILifestyleManager
{
readonly PerWebRequestLifestyleManager perWebRequestLifestyleManager;
readonly PerThreadLifestyleManager perThreadLifestyleManager;

public PerRequestLifeStyleManager()
{
perWebRequestLifestyleManager = new PerWebRequestLifestyleManager();
perThreadLifestyleManager = new PerThreadLifestyleManager();
}

public void Init(IComponentActivator componentActivator, IKernel kernel, ComponentModel model)
{
perWebRequestLifestyleManager.Init(componentActivator, kernel, model);
perThreadLifestyleManager.Init(componentActivator, kernel, model);
}

public object Resolve(CreationContext context)
{
return GetManager().Resolve(context);
}

public bool Release(object instance)
{
return GetManager().Release(instance);
}

public void Dispose()
{
GetManager().Dispose();
}

ILifestyleManager GetManager()
{
if (HttpContext.Current != null)
{
return perWebRequestLifestyleManager;
}

return perThreadLifestyleManager;
}
}

谁能告诉我,这是否是正确的方法?如果不是,那是什么?

谢谢。

编辑:我刚刚用一些似乎有效的代码更新了问题(在未经测试之前)。从温莎的角度来看,我仍然很想知道这是否安全可靠。

最佳答案

尝试使用 hybrid lifestyles 之一.

关于asp.net - 用于 asp.net 进程的 Windsor 复合生活方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7203745/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com