假设我有一个类似于以下内容的Azure Function方法定义:
[FunctionName("TestAzureFunction")]
public static async Task Run([BlobTrigger("{name}")]Stream fileBlob, string name, MyObject object = null)
我想向我的azure函数添加一个可选参数,以便其他代码也可以调用它。不幸的是,我收到一条错误消息,说不支持此绑定。有人知道如何解决此问题吗?
谢谢!
答案 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
}