Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何触发ServiceBusTrigger?_C#_Azure_Servicebus_Azure Servicebus Queues_Webjob - Fatal编程技术网

C# 如何触发ServiceBusTrigger?

C# 如何触发ServiceBusTrigger?,c#,azure,servicebus,azure-servicebus-queues,webjob,C#,Azure,Servicebus,Azure Servicebus Queues,Webjob,我有一个Azure WebJob,里面有类似的代码: public class Functions { public static void GenerateImagesForViewer( [QueueTrigger("resize-images-queue")] BlobInformation blobInfo, [Blob("unprocessed-pdf-storage-container/{BlobName}", FileAccess.Read)] Stream

我有一个Azure WebJob,里面有类似的代码:

public class Functions
{
    public static void GenerateImagesForViewer(
    [QueueTrigger("resize-images-queue")] BlobInformation blobInfo,
    [Blob("unprocessed-pdf-storage-container/{BlobName}", FileAccess.Read)] Stream input,
    [Blob("unprocessed-pdf-storage-container/{BlobNameWithoutExtention}-pdf.jpg")] CloudBlockBlob outputPdf)
    {            
        //Do something here
        string connectionString = "myConnectionString";
        TopicClient Client = 
        TopicClient.CreateFromConnectionString(connectionString, "resize- 
        images-topic");
        var topicMessage = new BrokeredMessage(blobInfo);
        Client.Send(topicMessage);
    }

    public static void GenerateImagesForViewerW80(
    [ServiceBusTrigger("resize-images-topic", "SizeW80")] BlobInformation blobInfo,
    [Blob("unprocessed-pdf-storage-container/{BlobNameWithoutExtention}-pdf.jpg", FileAccess.Read)] Stream input,
    [Blob("processed-image-storage-container/{BlobNameWithoutExtention}-h0-w80.jpg")] CloudBlockBlob outputBlob_0_80)
    {
      // It never comes here
      //Do something here
    }
}

将数据(BlobinInformation对象)上载到我的队列后,触发第一个方法(GenerateImagesForViewer)没有问题。但当我尝试向主题发送数据(BlobInformation对象)时,它不会触发任何订阅者(GenerateImagesForViewerW80)。代码中是否有错误,或者Azure中是否有必需的配置?

在Program.cs,
config.UseServiceBus()是使用ServiceBus触发器所必需的。如果在
函数
中有其他触发器或绑定(如您的情况),我们将不会看到警告

请参阅下面的代码示例并查看更多详细信息

        var config = new JobHostConfiguration();

        if (config.IsDevelopment)
        {
            config.UseDevelopmentSettings();
        }
        config.UseServiceBus();
        var host = new JobHost(config);
        host.RunAndBlock();

此外,我在您的输入和输出blob路径中看到一些可疑的空白。如果与原始代码相同,只需删除它们,否则触发器将无法正确执行与blob操作相关的代码。

我修复了参数中可疑的空格,这是一个输入错误。我添加了
config.UseServiceBus()程序.cs
中的code>,但到目前为止没有任何变化。还有其他建议吗?@IvanD您是否添加了
config.UseServiceBus()
before
host.RunAndBlock()?这就是我在
Program.cs
中的代码的样子:
public static void Main(){JobHostConfiguration config=new JobHostConfiguration();config.Queues.MaxPollingInterval=TimeSpan.fromsons(15);config.UseServiceBus();var host=new JobHost();host.RunAndBlock();}
@IvanD-Gotcha,初始化JobHost时,配置应作为构造函数参数传递。我错了,应该早点把完整的样品寄出去。这就是问题所在。非常感谢你的帮助!太神了