为后台线程配置 Autofac 容器

2024-02-29

我有一个 asp.net MVC 站点,其中有许多使用 InstancePerHttpRequest 范围注册的组件,但是我还有一个“后台任务”,它将每隔几个小时运行一次,但不会有 httpcontext。

我想获得一个已像这样注册的 IRepository 实例

builder.RegisterGeneric(typeof(EfRepository<>)).As(typeof(IRepository<>))
     .InstancePerHttpRequest();

如何使用 Autofac 从非 http 上下文执行此操作?我认为 IRepository 应该使用 InstancePerLifetimeScope


有几种方法可以做到这一点:

  1. 我认为最好的一个。正如您所说,您可以将存储库注册为 InstancePerLifetimeScope。它同样适用于 HttpRequests 和 LifetimeScopes。

    builder.RegisterGeneric(typeof(EfRepository<>)).As(typeof(IRepository<>))
        .InstancePerLifetimeScope();
    
  2. 您对 HttpRequest 的注册可能与 LifetimeScope 的注册不同,那么您可以进行两个单独的注册:

    builder.RegisterGeneric(typeof(EfRepository<>)).As(typeof(IRepository<>))
        .WithParameter(...)
        .InstancePerHttpRequest(); // will be resolved per HttpRequest
    
    builder.RegisterGeneric(typeof(EfRepository<>)).As(typeof(IRepository<>))
        .InstancePerLifetimeScope(); // will be resolved per LifetimeScope
    
  3. 您可以显式创建"HttpRequest"使用其标签的范围。暴露通过MatchingScopeLifetimeTags.RequestLifetimeScopeTag新版本中的属性。

    using (var httpRequestScope = container.BeginLifetimeScope("httpRequest")) // or "AutofacWebRequest" for MVC4/5 integrations
    {
        var repository = httpRequestScope.Resolve<IRepository<Entity>>();
    }
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为后台线程配置 Autofac 容器 的相关文章

随机推荐

  • 如何将 Python 中的所有 unicode 小写字符与正则表达式匹配?

    我正在尝试编写一个与 Python 3 中的 Unicode 小写字符匹配的正则表达式 我正在使用re图书馆 例如 re findall some pattern u K 应该返回 u 在 Sublime Text 中 我只需输入 lowe
  • Docker PHP 与 Xdebug 3 env XDEBUG_MODE 不起作用

    我正在尝试配置Xdebug 3在 PHP 容器中 并设置XDEBUG MODE环境变量为off根据文件https xdebug org docs all settings mode https xdebug org docs all set
  • Spring Integration 5.0 + Project Reactor:控制线程

    跟进问题https stackoverflow com a 47136941 1776585 https stackoverflow com a 47136941 1776585 我无法使我的集成 处理程序在使用时在并行线程中运行Flux
  • 如何在没有插件的情况下将 Google Analytics 与 Phonegap 结合使用?

    我正在制作一个应用程序 我想从用户那里获得分析 我尝试使用 Phonegap 插件 但没有成功实现它 我想知道是否可以通过将应用程序视为普通网页并在我的页面头部放置一些 JavaScript 来获取 Google Analytics 有一个
  • Bootstrap - 添加图例

    我目前正在使用 twitter bootstrap 它工作得很好 但我想向表单中使用的 well 元素添加一个图例 这样我就可以有多个well 表示表单上的子部分 我的表单现在的示例如下 例如 我想添加一个图例 以便我可以在 详细信息 标题
  • 在 Woocommerce 订单和电子邮件中的订单总计后添加自定义文本

    我使用它在购物车和结账页面上为来自特定国家 地区的客户显示自定义文本 add filter woocommerce cart totals order total html custom total message html 10 1 fu
  • OpenCsv 读取带有转义分隔符的文件

    我正在使用 opencsv 2 3 它似乎没有像我预期的那样处理转义字符 我需要能够处理不使用引号字符的 CSV 文件中的转义分隔符 示例测试代码 CSVReader reader new CSVReader new FileReader
  • Akka TestProbe 测试 context.watch() / 终止处理

    我正在使用 TestKit 测试 akka 系统 我正在测试的系统的一个参与者在收到某种消息类型后 context watches 发送者 并在发送者死亡时自杀 trait Handler extends Actor override de
  • Eclipse 将项目中的所有文件视为派生文件

    我在 Eclipse 工作区中创建了一个动态 Web 项目 它也是一个 Maven 项目 并受 SVN 控制 但在 打开资源 Ctrl Alt R 中 不会出现该项目中的文件 除非我从窗口的选项 右上角下拉菜单 显示派生资源 中进行检查 我
  • Android openGL 示例显示空白屏幕

    我刚刚在 Galaxy s3 上尝试了来自developer android com 的原始 Open GL 示例代码 它给我的只是一个空白屏幕 我更改了透明颜色并且屏幕背景发生了变化 但我仍然看不到代码所示的任何三角形或正方形 为了验证
  • LINQ to SQL C# 中的 SELECT COUNT

    如何使用 COUNT 编写 LINQ to SQL Example var purch from purchase in myBlaContext purchases select purchase 我怎样才能在这里得到计数 像那样 var
  • noexcept、继承构造函数以及对实际完整的不完整类型的无效使用

    我不确定这是否是一个错误GCC编译器或预期的行为noexcept 考虑以下示例 struct B B int noexcept virtual void f 0 struct D public B using B B D noexcept
  • facet_grid 中的多行

    我有一个数据集 大致如下所示 names tibble NAME 2 c Location1 Location2 Location3 Location4 dates tibble date seq as Date 2015 01 01 as
  • 字体在 iPhone 上的位置?

    我正在 iPhone 项目中使用 FreeType2 库 并且如果可能的话 我尝试简单地从系统加载 TTF 文件 FT Library library FT Face face int error error FT Init FreeTyp
  • 省略 xstream 中的 xml 声明

    我想使用 xstream 将内容附加到 xml 但每次运行时都使用 xstream toXml obj writer 它会向内容添加 xml 声明 我们可以在 xstream 中省略 xml 声明吗 我刚刚遇到这个问题 使用 XStream
  • 如何在 Javascript 中将数组转换为对象数组[重复]

    这个问题在这里已经有答案了 我想转换一个数组 如 John Jane 放入对象对数组中 如下所示 name John name Jane 请帮助我这样做 尝试数组中的 map 函数 const output John Jane map na
  • 使用 Selenium 验证

    我需要验证网页上的特定插槽是否已加载 我正在使用 Selenium WebDrivermain 函数 我应该使用 JUnit 测试用例吗 在任意对象之间检索文本的方法有哪些 div 有具体的id吗 如果给定这一页 http ideone c
  • R:为文字云图形/png添加标题

    我有一些有效的 R 代码 可以从术语文档矩阵生成标签云 现在 我想从许多文档创建一大堆标签云 并在稍后进行可视化检查 要知道标签云图片属于哪个文档 语料库 我想为生成的图形添加标题 我怎么做 也许这是显而易见的 但我仍然是 R 图形的初学者
  • DNS 与 GKE 内部负载均衡器

    我在 GKE 上有两个 kubernetes 集群 一个公共集群处理与外界的交互 另一个私有集群仅供内部使用 公共集群需要访问私有集群上的一些服务 我已通过以下方式将这些服务暴露给公共集群的 Pod内部负载均衡器 https cloud g
  • 为后台线程配置 Autofac 容器

    我有一个 asp net MVC 站点 其中有许多使用 InstancePerHttpRequest 范围注册的组件 但是我还有一个 后台任务 它将每隔几个小时运行一次 但不会有 httpcontext 我想获得一个已像这样注册的 IRep