代码之家  ›  专栏  ›  技术社区  ›  idude

向Azure函数添加可选参数

  •  0
  • idude  · 技术社区  · 4 年前

    假设我有一个Azure Function方法定义,看起来像这样:

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

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

    提前感谢!

    0 回复  |  直到 4 年前
        1
  •  1
  •   rickvdbosch    4 年前

    你可以实施 实际的 (private)方法中的函数,并从两个不同的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
    }
    
    
        2
  •  1
  •   ffffff01    4 年前

    您似乎已经创建了一个带有blob触发器的函数。如果你想以其他方式触发它,而不是在blob存储中创建新文件,你应该考虑http触发器或服务总线触发器。