向Azure函数添加可选参数

时间:2020-05-23 04:28:49

标签: azure azure-functions

假设我有一个类似于以下内容的Azure Function方法定义:

    [FunctionName("TestAzureFunction")]
    public static async Task Run([BlobTrigger("{name}")]Stream fileBlob, string name, MyObject object = null)

我想向我的azure函数添加一个可选参数,以便其他代码也可以调用它。不幸的是,我收到一条错误消息,说不支持此绑定。有人知道如何解决此问题吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

似乎您已经创建了带有Blob触发器的函数。如果您希望能够通过其他方式触发它,而不是在Blob存储中创建新文件,则应考虑使用http触发器或服务总线触发器。

答案 1 :(得分:1)

您可以在(私有)方法中实现 actual 功能,并从两个不同的Function中调用该函数(或者将该方法公开,并直接调用该方法)。

使用伪代码:

// Use bindings here to get the added Blob and its name
[FunctionName("TestAzureFunctionBlob")]
public static async Task Run([BlobTrigger("{name}")]Stream fileBlob, string name)
{
    await DoTheMagicAsync(fileBlob, name);
}

// Use bindings here to het the MyObject instance from the post method
[FunctionName("TestAzureFunctionHttp")]
public static async Task Run([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)]MyObject myObject)
{
    var stream = GetStreamFromHttpRequest();
    var fileName = GetNameFromHttpRequest();

    // Call the generic method
    await DoTheMagicAsync(stream, fileName, object);
}

private void DoTheMagicAsync(Stream stream, string name, MyObject myObject = null)
{
    // Do your (async) magic here
}

相关问题