Logic App 通过 HTTP 触发器调用的 Azure C# 函数 - 需要通过输入绑定引用 Blob 文件名
Azure C# function called by Logic App via HTTP trigger - need to reference a Blob filename through input bindings
我在 C# 中创建了一个 Azure 函数来读取 .xlsx 电子表格(通过 ExcelDataReader)并输出格式化的 xml 文件(使用 XMLWriter)。 HTTP 触发的功能目前运行良好,但我现在被告知我的文件 reading/writing 的磁盘路径将不再可用,因为我们的本地数据网关是显然,将被遗弃。因此,我的函数现在必须对输入和输出都使用 blob 存储。
我的处理从逻辑应用程序工作流程开始,所有这些都在电子邮件到达共享帐户的收件箱时触发。任何相关的 .xlsx 附件都保存到 blob 存储中,当前逻辑应用 运行-number 用作文件正文。
我在 Logic App 中构建了一个 JSON 格式的绑定记录,并将其传递给函数,希望我可以在绑定的声明代码中获取它,例如
{
public static class Excel2XML
{
[FunctionName("Excel2XML")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
[Blob({blobName}, FileAccess.Read, Connection = "AzureWebJobsStorage")] Stream inputStream,
[Blob("parked/{sys.utcnow}.xml", FileAccess.Write, Connection = "AzureWebJobsStorage")Stream outputStream,
显然,{blobName} 是我希望从第一个 blob 声明中的绑定中读取的值 - 第二个 blob 声明用于 xml 输出,我已经给它一个 dateTime 正文(至少暂时如此)。
我已经阅读了 LOADS 将此值带入函数的方法,我想我会坚持使用标准绑定解决方案,希望能使它正常工作(我想获得绑定如果可能的话,输入和输出流在程序开始时在声明性内容中解决)。我真的很想知道其他人是如何(成功地)做到这一点的。 TIA 提供建议。
正如 rene 在评论中提到的,您可以添加一个 class,其中包含一个名为 blobName
的 属性,并模仿 this sample 来实现您的要求。
除此之外,由于您使用逻辑应用程序,因此您还可以使用逻辑应用程序的 blob storage connector 来获取 blob 内容或写入 blob 内容。
我在 C# 中创建了一个 Azure 函数来读取 .xlsx 电子表格(通过 ExcelDataReader)并输出格式化的 xml 文件(使用 XMLWriter)。 HTTP 触发的功能目前运行良好,但我现在被告知我的文件 reading/writing 的磁盘路径将不再可用,因为我们的本地数据网关是显然,将被遗弃。因此,我的函数现在必须对输入和输出都使用 blob 存储。
我的处理从逻辑应用程序工作流程开始,所有这些都在电子邮件到达共享帐户的收件箱时触发。任何相关的 .xlsx 附件都保存到 blob 存储中,当前逻辑应用 运行-number 用作文件正文。
我在 Logic App 中构建了一个 JSON 格式的绑定记录,并将其传递给函数,希望我可以在绑定的声明代码中获取它,例如
{
public static class Excel2XML
{
[FunctionName("Excel2XML")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
[Blob({blobName}, FileAccess.Read, Connection = "AzureWebJobsStorage")] Stream inputStream,
[Blob("parked/{sys.utcnow}.xml", FileAccess.Write, Connection = "AzureWebJobsStorage")Stream outputStream,
显然,{blobName} 是我希望从第一个 blob 声明中的绑定中读取的值 - 第二个 blob 声明用于 xml 输出,我已经给它一个 dateTime 正文(至少暂时如此)。
我已经阅读了 LOADS 将此值带入函数的方法,我想我会坚持使用标准绑定解决方案,希望能使它正常工作(我想获得绑定如果可能的话,输入和输出流在程序开始时在声明性内容中解决)。我真的很想知道其他人是如何(成功地)做到这一点的。 TIA 提供建议。
正如 rene 在评论中提到的,您可以添加一个 class,其中包含一个名为 blobName
的 属性,并模仿 this sample 来实现您的要求。
除此之外,由于您使用逻辑应用程序,因此您还可以使用逻辑应用程序的 blob storage connector 来获取 blob 内容或写入 blob 内容。