我有一个BlobTrigger,其设置如下:
[FunctionName("TransformFile")]
public static void Run(
[BlobTrigger("%container%/{name}", Connection = "storage")] Stream blobIn,
[Blob("%container%-pdf/{name}", FileAccess.Write, Connection = "storage")] Stream blobOut)
{
//...
}
这是什么,它从1个容器中取出文件,对其进行突变并将其写回到另一个容器中。我看到对blobtrigger进行的每个调用都在Application Insights中显示了对逻辑上将新blob写入到其中的存储的依赖项异常调用,该存储在那时还不存在,而且我不确定为什么要这样做使它们不应该这样做。与存储API无关,是否已经存在可对其进行写入的Blob。
我也可以使用NuGet包作为解决方法来写blobOut
,但这不是最佳实践。或者在函数运行没有问题时忽略异常,尽管每次调用都引发异常,但日志却被无用的异常塞满了。
我的项目中有以下NuGet软件包:
Microsoft.Azure.WebJobs.Extensions.Storage 3.0.4
Microsoft.NET.sdk.Functions 1.0.24
Microsoft.NETCore.App 2.1.0
答案 0 :(得分:1)
也许您可以尝试使用我的代码,我已经在本地对其进行了测试,它将创建容器%container%-pdf
并将blob上传到该容器。
[FunctionName("Function1")]
public static void Run([BlobTrigger("%container%/{name}", Connection = "AzureWebJobsStorage")]Stream myBlob,
[Blob("%container%-pdf/{name}", FileAccess.Write, Connection = "AzureWebJobsStorage")] CloudBlockBlob outputblob, string name, ILogger log)
{
log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
outputblob.UploadFromStreamAsync(myBlob);
}