当前位置: 首页 > 知识库问答 >
问题:

V2 Azure函数依赖注入和微软。Azure.WebJobs.Binder

都乐逸
2023-03-14

我已经成功地将依赖注入用于我自己的自定义服务,如本文所述。

我想要的是在我的定制服务中使用框架作为参数注入Azure函数的绑定器。用作函数参数的示例:

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, Binder binder, TraceWriter log)

我尝试将Binder作为参数添加到我的服务构造函数并让框架创建我的服务实例,但传入的Binder始终为空。

我的服务构造函数:

public MyService(Binder binder)

注册如下:

builder.Services.AddSingleton<IMyService, MyService>();

有人知道这是否可能吗?如果可能,我做错了什么?

共有1个答案

马胜泫
2023-03-14

首先,您必须创建一个这样的类,允许您读取/写入:

   public static class Bindor
    {
        public static async Task<string> ReadFromBlob(string path, Binder binder, string connection)
        {
            var attributes = new Attribute[]
            {
                    new BlobAttribute(path),
                    new StorageAccountAttribute(connection)
            };

            using (var reader = await binder.BindAsync<TextReader>(attributes))
            {
                return await reader.ReadToEndAsync();
            }
        }

        public static async Task BindToBlob(string path, Binder binder, object payload, string connection)
        {
            var attributes = new Attribute[]
            {
                    new BlobAttribute(path),
                    new StorageAccountAttribute(connection)
            };
            using (var writer = await binder.BindAsync<TextWriter>(attributes))
            {
                writer.Write(payload);
            }
        }
    }

然后,您将 Binder binder 作为参数包含在函数中(就像您正在执行的那样)。

示例用法如下:

//path would be your path to the blob (including the container)
//binder is the parameter from your function signature
//sorry about the confusing naming, Bindor is the class we created, whereas Binder is the functions class
await Bindor.BindToBlob(path, binder, "my payload", connection);
 类似资料:
  • 我有一个时间触发的Azure功能

  • 我有一个关于 azure 函数 v1 中的依赖注入的新问题。 实际情况: 我有一个azure函数V1,我想在其中引用我的业务服务,而无需重新发明轮子即可使用我的服务。我在Internet上搜索并找到了这篇来自Microsoft的有趣文章。 但是,它似乎只适用于azure函数v2(. net core),因为每当我尝试安装时,我总是收到以下错误: 检测到Microsoft.Azure.WebJobs

  • 在之前的所有JUnit版本中,测试构造函数或方法都不允许有参数(至少不能使用标准的Runner实现)。作为JUnit Jupiter的主要变化之一,测试构造函数和方法现在都允许有参数。这带来了更大的灵活性,并为构造函数和方法启用依赖注入。 ParameterResolver定义了测试扩展的API,希望在运行时动态解析参数。如果测试构造函数或@Test, @TestFactory, @BeforeE

  • 在React中,想做依赖注入(Dependency Injection)其实相当简单。请看下面这个例子: // Title.jsx export default function Title(props) { return <h1>{ props.title }</h1>; } // Header.jsx import Title from './Title.jsx'; export defa

  • 依赖注入 Dependency Injection is a strong mechanism, which helps us easily manage dependencies of our classes. It is very popular pattern in strongly typed languages like C# and Java. 依赖注入是一个很强大的机制,该机制可以帮

  • 简介 Hyperf 默认采用 hyperf/di 作为框架的依赖注入管理容器,尽管从设计上我们允许您更换其它的依赖注入管理容器,但我们强烈不建议您更换该组件。 hyperf/di 是一个强大的用于管理类的依赖关系并完成自动注入的组件,与传统依赖注入容器的区别在于更符合长生命周期的应用使用、提供了 注解及注解注入 的支持、提供了无比强大的 AOP 面向切面编程 能力,这些能力及易用性作为 Hyper