C# 如何使用输出绑定而不必赋值?

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

如何在不强制为输出绑定赋值的情况下指定输出绑定

我能够成功地使用以下属性绑定到2个输出blob位置:

        [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;