我有一个Azure函数,该函数由一些Blob创建触发,正在执行一些转换(主要是OCR),然后将结果再次写入Blob:
:param priority_weight: priority weight of this task against other task.
This allows the executor to trigger higher priority tasks before
others when things get backed up.
一切正常。但是,如果“ DoOcr()”函数内部出现问题,则会引发异常-并将其捕获到我的catch块中-函数结束,并在“ output / {name} _ {DateTime}”处创建一个空的新Blob。文本文件”。
“ WriteAsync()”从不被调用,但是为什么仍然创建文件?如果在绑定中使用“ CloudBlockBlob”而不是“ TextWriter”,则不会发生。
答案 0 :(得分:1)
正如凯尔所说,TextWriter writer = new StreamWriter(stream);
。因此,当您使用TextWriter
作为Blob输出时,它将为指定路径上的指定文件初始化StreamWriter类的新实例。如果文件存在,则可以将其覆盖或附加。 如果文件不存在,则此构造方法将创建一个新文件。
使用CloudBlockBlob作为Blob输出时,它将使用指向Blob的绝对URI初始化CloudBlockBlob
类的新实例,该实例被读为内存流,然后转储到文件。因此,如果流被中断,它将不会创建输出新文件。