使用 Azure WebJobs SDK 进行依赖注入?

2023-11-21

问题在于 Azure WebJobs SDK 仅支持公共静态方法作为作业入口点,这意味着无法实现构造函数/属性注入。

我无法在官方 WebJobs SDK 文档/资源中找到有关此主题的任何内容。我遇到的唯一解决方案是基于这篇文章中描述的服务定位器(反)模式here.

有没有一种好方法可以为基于 Azure WebJobs SDK 的项目使用“正确的”依赖项注入?


Azure WebJobs SDK 现在支持实例方法。将此与自定义 IJobActivator 相结合允许您使用 DI。

首先,创建可以使用您最喜欢的 DI 容器解析作业类型的自定义 IJobActivator:

public class MyActivator : IJobActivator
{
    private readonly IUnityContainer _container;

    public MyActivator(IUnityContainer container)
    {
        _container = container;
    }

    public T CreateInstance<T>()
    {
        return _container.Resolve<T>();
    }
}

您需要使用自定义 JobHostConfiguration 注册此类:

var config = new JobHostConfiguration
{
    JobActivator = new MyActivator(myContainer)
};
var host = new JobHost(config);

然后,您可以使用一个带有实例方法的简单类来完成您的工作(这里我使用 Unity 的构造函数注入功能):

public class MyFunctions
{
    private readonly ISomeDependency _dependency;

    public MyFunctions(ISomeDependency dependency)
    {
        _dependency = dependency;
    }

    public Task DoStuffAsync([QueueTrigger("queue")] string message)
    {
        Console.WriteLine("Injected dependency: {0}", _dependency);

        return Task.FromResult(true);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Azure WebJobs SDK 进行依赖注入? 的相关文章

  • C# 测试活动的互联网连接。 Ping google.com

    C 2008 我正在使用此代码来测试互联网连接 因为我的应用程序必须登录到网络服务器 但是 如果用户互联网连接失败或电缆被拔出 我必须通知用户 Ping www google com to check if the user has a i
  • NHibernate IQueryable 集合作为 root 的属性

    我有一个根对象 它有一个集合属性 例如 I have a Shelf object that has Books Now public class Shelf public ICollection
  • 增量决策树 C++ 实现

    有谁知道决策树分类器的增量实现吗 这样 当您将新实例添加到训练集中时 它可以根据现有决策树分类器以低计算量并尽可能快地生成最佳决策树分类器 换句话说 我有一个最优决策树分类器集A 其中命名为T 1 现在我想添加实例X to set A并找到
  • & 运算符的含义是什么?

    在下面的代码中 Expression
  • boost::asio::io_service 是否保留处理程序的顺序?

    Does boost asio io service http www boost org doc libs release doc html boost asio reference io service html保证处理程序的调用顺序与
  • 试图使用加密来混淆我的项目打破了它

    我试图尝试不同的混淆选项 为了做到这一点 我首先尝试了加密货币 以下是我遵循的步骤 打开加密向导并选择一些选项 选择我的解决方案文件 完成向导后 我看到有些 Dll 被很好地混淆了 但我的项目现在无法构建 我注意到的两件事是 我的文件夹中有
  • 从套接字读取 C HTTP

    我想知道如何判断是否已从套接字接收到所有数据 这是一个简单的网络代理 现在我正在处理请求部分 所以发送的内容应该以 r n r n 结尾 我不知道请求会持续多久 我在这里读过一些帖子 说我应该检查读取函数是否返回 0 但其他人说0只在客户端
  • 如何删除实体框架6中的多对多关系

    如果将项目连接为多对多关系 则从数据库中删除项目时会出现问题 我的数据库看起来像 Project lt JobInProject gt Job ProjectID JobInProjectID JobID ProjectID JobID 主
  • EF Core 一对多关系列表返回 null

    我正在尝试学习如何在 EF Core 中正确利用 DbContext 我有一个团队课程 public class Team public int ID get set public string Name get set public bo
  • Identity Server 4:添加访问令牌的声明

    我正在使用 Identity Server 4 和隐式流 并且想要向访问令牌添加一些声明 新的声明或属性是 tenantId 和 langId 我已将 langId 添加为我的范围之一 如下所示 然后通过身份服务器请求 但我也获得了tena
  • 三种 System.Drawing 方法表现出缓慢的绘制或闪烁:解决方案?或其他选择?

    我正在通过 System Drawing 进行一些绘图 但遇到了一些问题 我将数据保存在队列中 并将该数据绘制 绘制 到三个图片框中 此方法填充图片框 然后滚动图形 所以不要在以前的绘图上绘制 并且逐渐看起来更混乱 我找到了两种绘制图表的解
  • 为什么 httpRuntime targetFramework="4.5" 禁止抓取 .ASPXAUTH cookie?

    当我的 web config 具有以下 httpRuntime 时 我的控制器无法获取 cookie ASPXAUTH 它似乎能够获取任何其他 cookie 无论带或不带句点前缀 如果我删除下面的行 它就可以正常工作
  • C 中的链表数组:初始化和插入?

    我需要创建一个链表数组 如图所示 这就是我到目前为止所做的 typedef struct Node int data struct Node next Node int main void Node link 5 for int q 0 q
  • C++:LPWSTR 在 cout 中打印为地址

    我有一个类型变量LPTSTR 我打印到std cout with lt lt 在 ANSI 系统中 不知道它是在哪里确定的 它工作得很好 它打印了字符串 现在 在 Unicode 系统中 我得到的是十六进制地址而不是字符串 那么 为什么LP
  • 从视图模型调用方法的命令

    好吧 我倾向于避免使用命令 因为它们总是让我感到困惑 但我正在进行一个新项目 并且正在尝试正确构建它 并且在我看来没有任何代码隐藏 基本上我现在想做的就是连接一个按钮来触发一个命令 在我的视图模型上执行一些操作 但不知何故 如此简单的事情仍
  • 如何在 Visual Studio 2010 Express 中引用 system.drawing?

    我对此有点陌生 我的印象是要绘制我创建的矩形 我需要使用 system drawing graphics 问题是 我收到错误 命名空间 System 中不存在类型或命名空间名称 drawing 您是否缺少程序集引用 当我右键单击解决方案资源
  • 使用非字符串作为字符串(而不是自动使用 ToString)时如何显示错误?

    建议的重复确实是一个类似的问题 然而 答案只涵盖一种选择 禁用 ToString 本身 还有其他可能的解决方案 例如让 Visual Studio 警告我 或者不调用 ToString 仔细阅读那里的答案 他认为is调用 只是解释说没有办法
  • C++ 联合数组和变量?

    在C 中没有办法做这样的事情吗 union Scalar x y Scalar v 2 Where x v 0 and y v 1 既然您使用的是 C 而不是 C 并且它们具有相同的类型 为什么不直接将 x 设为对 v 0 的引用 将 y
  • 应用程序网关如何防止请求发送到最近终止的 Pod?

    我目前正在 Azure 中研究和试验 Kubernetes 我正在使用 AKS 和应用程序网关入口 据我了解 当 Pod 添加到服务时 端点会更新 入口控制器会不断轮询此信息 随着新端点的添加 AG 也会更新 当它们被移除时 AG 也被更新
  • asp.net mvc GET 请求上的 formcollection 应该为空

    我正在发布一个简单的操作 public void Login FormCollection formCollection 即使查询字符串值很少 formcollection Count is 0 是靠行为吗 FormCollection 使

随机推荐

  • 更改 iOS 中禁用的栏按钮项目的颜色

    我需要在导航栏中显示我的应用程序的图标 为此 我将其添加为右栏按钮项目 我不希望它可点击 我只需要那里的图标 所以我将其设置为禁用 问题是图标显示为灰色 而不是绿色 有没有办法禁用此按钮但又保留其原始颜色 尝试这个 let barButto
  • wcf 测试客户端不支持此操作,因为它使用类型 system.object[]

    您好 在运行我的 wcf 服务时 出现错误 wcf 测试客户端不支持此操作 因为它使用类型 system object 我正在尝试检索正在运行的进程列表 ServiceBehavior InstanceContextMode Instanc
  • Windows UDP 套接字:recvfrom() 失败并出现错误 10054

    大家好 我正在尝试使用 Windows 套接字发送和接收 UDP 数据包 在 C 中 它一直运行良好 直到三天前程序停止正常运行 总结一下情况 当在我的套接字上调用 WSAPoll 时 即使没有启动服务器 它也总是返回用所有可能的 reve
  • 在 Perl 6 中继承私有属性

    我在文档中找不到任何内容 但似乎子类中无法访问其超类的私有变量 我对吗 class A has a class B is A has b method set a x a x my var B new var set a 5 say var
  • 使用 linq 表达式通过键列表过滤字典

    我有一本包含所有用户及其相应年龄的字典 Dictionary
  • 如何强制 DriverManager.getConnection() 方法调用超时?

    我有一个应用程序将与 MySQL 建立数据库连接并执行查询 有时 DriverManager getConnection 方法调用需要2秒 有时需要30秒 有没有办法控制这个方法2秒后超时 DriverManager setLoginTim
  • Flask SQLAlchemy 分页错误

    我有这个代码和all 方法和所有其他方法都适用于此 我已经查看了所有内容 我可以认为该方法paginate 致力于BaseQuery这也是Query app route app route index app route blog app
  • 如何修复 xamarin android 中的“不允许到 x 的明文 HTTP 流量”

    我的应用程序存在问题 不允许到 x 的明文 HTTP 流量 我已经尝试将 android usesCleartextTraffic true 放入我的清单中 但我想将 android usesCleartextTraffic 标志更改为 f
  • 在 F# 中,谁负责消息队列?

    在 F 中 如果我做类似的事情 让表单 新表单 文本 MyForm 在FSI中运行它 表单将正常显示和更新 甚至可以接收消息 然而 谁在泵送消息队列呢 这里没有 Application Run 调用 我有点困惑 正如 ildjarn 所说
  • CasperJS,使用测试框架并行浏览

    问题 我想知道是否可以进行并行浏览将测试框架放在一个脚本文件中 因此使用 tester 模块和 casperjs test 命令 我见过有些人创建了两个 casper 实例 CasperJS并发请求 and https groups goo
  • 使用 ShowDialog 和无边框窗口时,IsMouseOver 触发器不起作用

    我有两个Windows申请 其中之一是MainWindow另一个是设置 SettingsWindow单击设置按钮时打开ShowDialog并设置其Owner to MainWindow On the SettingsWindow我在窗口的最
  • Internet Explorer 11-出现安全证书错误提示问题

    我正在 IE11 中测试一个网站 它具有混合内容 http 和 https 在以前的版本中 会有一个提示询问我们应该允许安全证书错误的内容 但IE11中无此提示 站点崩溃 我尝试更改 高级选项 中的安全设置 但没有用 请建议 此行为与设置的
  • HTTP 响应有重定向,但没有往返?

    我希望浏览器反映除用于创建请求的 URL 之外的其他 URL 但无需往返服务器 我也许会这样做 POST form HTTP 1 1 然后返回 HTTP 1 1 200 OK Location hello 但这会导致重定向 浏览器将再次请求
  • 按值列表对查询结果排序

    我正在处理一个 sql 查询 它传递一个值列表作为参数 例如 select from ProductGroups where GroupID in 24 12 7 14 65 该列表由整个数据库中使用的关系构成 并且必须按此顺序保存 我想按
  • 关于让 xxhdpi 在 Android 模拟器中工作有什么建议吗?

    我尝试手动配置 AVD 以支持 xxhdpi 480 dpi 但是 Android 模拟器的最大支持 xhdpi 320 dpi 是的 文档说 xhdpi 可以扩展 但是 我希望看到它工作 我目前正在尝试从源代码构建 android 看看是
  • 角度指令 attrs.$observe

    我在网上找到了这个 Angular 指令来添加 Twitter 分享按钮 一切似乎都是显而易见的 但我不知道发生了什么attrs observe实际上正在做 我查看了文档但看不到 observe任何地方都可以引用 该指令似乎只是添加了hre
  • 如何检查线程是否位于同步块或方法内?

    我的 Java 应用程序使用两个线程 从历史上看 有同步方法和专用锁对象在使用 我需要知道当前线程是否有锁 以及它是通过方法还是对象 我怎样才能做到这一点 当进入同步方法时 VM 对当前对象设置锁 因此以下代码具有相同的效果 synchro
  • PostgreSQL UTF-8 二进制排序规则

    我想要一个排序规则 将 0x1234 的 UTF 8 编码排序为低于 0x1235 而不管 Unicode 标准中的字符映射如何 MySQL 为此使用 utf8 bin MSSQL 显然http msdn microsoft com en
  • 在Sql Server中将2个数字相除

    我正在进行 SQL Server 查询计算 除法总是给我零 SUM sl LINES ORDERED SUM sl LINES CONFIRMED SUM sl LINES CONFIRMED SUM sl LINES ORDERED AS
  • 使用 Azure WebJobs SDK 进行依赖注入?

    问题在于 Azure WebJobs SDK 仅支持公共静态方法作为作业入口点 这意味着无法实现构造函数 属性注入 我无法在官方 WebJobs SDK 文档 资源中找到有关此主题的任何内容 我遇到的唯一解决方案是基于这篇文章中描述的服务定