C# 如何使用输出绑定而不必赋值?
如何在不强制为输出绑定赋值的情况下指定输出绑定 我能够成功地使用以下属性绑定到2个输出blob位置:C# 如何使用输出绑定而不必赋值?,c#,.net,azure-functions,C#,.net,Azure Functions,如何在不强制为输出绑定赋值的情况下指定输出绑定 我能够成功地使用以下属性绑定到2个输出blob位置: [Blob("processed/{CorrelationId}", FileAccess.Write, Connection = "OnSchedulingToMMMQueueTriggered:ProcessedPayloadsConnectionString")] out string processedPayload, [Blob("success/{Co
[Blob("processed/{CorrelationId}", FileAccess.Write, Connection = "OnSchedulingToMMMQueueTriggered:ProcessedPayloadsConnectionString")] out string processedPayload,
[Blob("success/{CorrelationId}", FileAccess.Write, Connection = "OnSchedulingToMMMQueueTriggered:ProcessedPayloadsConnectionString")] out string success,
但是,由于我没有将任何内容分配给此值out string success,因此出现以下异常:
如何在不强制为输出绑定赋值的情况下指定输出绑定在某些情况下,我不希望分配任何值,因为我只是不想写入该blob
我的全部职能如下:
public static class OnSchedulingToMMMQueueTriggered
{
[FunctionName("OnSchedulingToMMMQueueTriggered")]
public static void Run(
[QueueTrigger("httpqueue", Connection = "OnSchedulingToMMMQueueTriggered:SourceQueueConnection")] Payload myQueueItem,
[Blob("processed/{CorrelationId}", FileAccess.Write, Connection = "OnSchedulingToMMMQueueTriggered:ProcessedPayloadsConnectionString")] out string processedPayload,
[Blob("success/{CorrelationId}", FileAccess.Write, Connection = "OnSchedulingToMMMQueueTriggered:ProcessedPayloadsConnectionString")] out string success,
ILogger log)
{
log.LogInformation($"C# Queue trigger function processed: {myQueueItem.Body}");
processedPayload = "this shoudl be the body of the string";
}
}
如果使用特定的out参数,它将需要它。如果输出是有条件的,考虑只创建一个BulbCube绑定,只在需要时使用它。这将要求您自己使用GetBlockBlobReference创建blob,但这只是解决这个问题的一点额外代码。我还没有机会测试下面的代码,所以您可能需要稍微调整一下
public static class OnSchedulingToMMMQueueTriggered
{
[FunctionName("OnSchedulingToMMMQueueTriggered")]
public static void Run(
[QueueTrigger("httpqueue", Connection = "OnSchedulingToMMMQueueTriggered:SourceQueueConnection")] Payload myQueueItem,
[Blob("processed/{CorrelationId}", FileAccess.Write, Connection = "OnSchedulingToMMMQueueTriggered:ProcessedPayloadsConnectionString")] out string processedPayload,
[Blob("success", FileAccess.Write, Connection = "OnSchedulingToMMMQueueTriggered:ProcessedPayloadsConnectionString"))] CloudBlobContainer outputSuccessContainer,
ILogger log)
{
log.LogInformation($"C# Queue trigger function processed: {myQueueItem.Body}");
processedPayload = "this shoudl be the body of the string";
if (outputNeeded) {
var blockBlob = outputSuccessContainer.GetBlockBlobReference(CorrelationId + ".txt");
await blockBlob.UploadText(processedPayload);
blockBlob.Properties.ContentType = "text/plain";
blockBlob.SetProperties();
}
}
}
我猜我需要执行outputSuccessContainer.CreateIfNotExistsAsync;首先在运行UploadTextAsync之前?是的,如果您不能确定所引用的容器是否已经存在,那么最好调用await outputSuccessContainer.CreateIfNotExistsAsync;