我想直接在 Azure 函数方法/主体中注入(inject)对象实例,如下所示:
[FunctionName("StartJob")]
public async Task<IActionResult> Start(
[HttpTrigger(AuthorizationLevel.Function, "Post", Route = "v1/job")] HttpRequest req,
IStartJobHandler handler)
{
...
但是当我这样做时出现运行时错误:
“StartJob”函数出现错误:Microsoft.Azure.WebJobs.Host:索引方法“StartJob”出错。 Microsoft.Azure.WebJobs.Host:无法将参数“handler”绑定(bind)到类型 IStartJobHandler。确保绑定(bind)支持参数类型。如果您使用绑定(bind)扩展(例如 Azure 存储、ServiceBus、定时器等),请确保您已在启动代码中调用扩展的注册方法(例如 builder.AddAzureStorage()、builder.AddServiceBus( )、builder.AddTimers() 等)。
如果我在构造函数中注入(inject)相同的实例 - 一切都很好。 (所以不需要建议我检查我的启动类等等:))
但我不想注入(inject)构造函数。因为实例只属于一个特定的函数,其想法是隔离函数之间的实例。
所以,问题是:我是否可以直接在 azure 函数方法中注入(inject)自定义类,而无需编写额外的代码,例如 ILogger:
[FunctionName("StartJob")]
public async Task<IActionResult> Start(
[HttpTrigger(AuthorizationLevel.Function, "Post", Route = "v1/job")] HttpRequest req,
ILogger logger)
{
...
或者,它只是不受支持?
谢谢。
最佳答案
将自定义类直接注入(inject)到 Function 中是不可能的,您仍然需要注入(inject)构造函数来实现您的想法。如果您不选择注入(inject)构造函数,则依赖项将不可用。编写额外的代码是必要的。这是正确的方法:
关于c# - 直接在函数方法中注入(inject) DI 实例 (Azure Functions),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60211245/