在 Azure 中,我开发了一个函数(应用程序服务),当一个新的 csv 文件被放置在一个特定的存储帐户中时会触发它。该函数是在 Azure 中开发的,每次上传新的 csv 文件时都不会出现问题。然而,考虑到 CI/CD,我决定将我的开发过程从 Azure 转移到 Visual Studio (2017)。
代码在本地运行没有任何问题,但是一旦我将代码发布到 Azure(通过 VSTS),挑战就开始了。当新的 csv 文件上传到存储帐户时,似乎触发器没有被激活。顺便说一句,该功能确实触发了,但我无法确定这是为什么,或重新创建它。
为了使问题更易于理解,我将代码缩减为仅 Blobtrigger 和一些日志记录。此外,我删除了 VSTS 中的构建,并通过 Visual Studio 2017 直接发布了我的构建,但结果相似。该代码在本地运行良好,但发布后该功能不会被触发(或非常偶然地触发)。
我使用的代码:
using System.IO;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
namespace TestApp
{
public static class Function1
{
[FunctionName("Function1")]
public static void Run([BlobTrigger("csv-files-in/{name}.csv", Connection = "AzureWebJobsStorage")]Stream myBlob, string name, TraceWriter log)
{
log.Info($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
}
}
}
Run Code Online (Sandbox Code Playgroud)
“AzureWebJobsStorage”指的是定义了 Blobstorage 端点的 local.settings.json。此设置会自动部署到 Azure,但即使我手动设置此连接,也不会触发该功能。经过多次尝试自己解决这个问题后,我决定向本网站上的聪明人寻求建议。这是一个错误还是我错过了什么?在将其发布到 Azure 后,我该怎么做才能确保我的函数确实(可靠地)被触发?提前致谢。
continuous-integration visual-studio c#-3.0 azure-blob-storage azure-functions