繁体   English   中英

Microsoft.Azure.WebJobs.ServiceBus.dll中的System.InvalidOperationException

[英]System.InvalidOperationException in Microsoft.Azure.WebJobs.ServiceBus.dll

我有一个要针对服务总线队列触发的Azure函数(v2):

[FunctionName("ConsumeNewClient")]
        public async void EntryPoint([ServiceBusTrigger(queueName:LocalSettings.AvaloqServiceBusConfigurationValues.Queue,
            Connection = "ServiceBusConnection")]
            string ceSbMsg, [OrchestrationClient] DurableOrchestrationClient starter, ILogger log)
        {
            var instanceId = await starter.StartNewAsync("PolicyOrchestrator", ceSbMsg);
            _logger.LogInformation(0, $"[Interfaces.Avaloq.Presentation.AzureFunctions.ConsumeNewClient] - Started orchestration with ID = '{instanceId}'.");
    }

从VS2019调试时,在Output \\ Debug窗口中会多次出现以下消息:

引发异常:Microsoft.Azure.WebJobs.ServiceBus.dll中的“ System.InvalidOperationException”

该应用程序继续运行,直到我在受监视的队列上放置一条消息(使用服务总线资源管理器),然后又多次遇到相同的异常。 我已经在var instanceId = ...上设置了一个断点,但是从未击中该断点。

如果我复制相同的函数并粘贴到较旧的解决方案中(然后将ServiceBusConnection的条目输入到local.settings.json中),则一切正常。

有谁知道一种获取有关Microsoft.Azure.WebJobs.ServiceBus.dll中引发的异常的详细信息的方法?

使用async Task代替async void

[FunctionName("ConsumeNewClient")]
public async Task EntryPoint(
        [ServiceBusTrigger(queueName:LocalSettings.AvaloqServiceBusConfigurationValues.Queue, Connection = "ServiceBusConnection")]
        string ceSbMsg, 
        [OrchestrationClient] 
        DurableOrchestrationClient starter, 
        ILogger log) {
    var instanceId = await starter.StartNewAsync("PolicyOrchestrator", ceSbMsg);
    _logger.LogInformation(0, $"[Interfaces.Avaloq.Presentation.AzureFunctions.ConsumeNewClient] - Started orchestration with ID = '{instanceId}'.");
}

异步void最有可能引起火灾并忘记,这是由于线程问题而引发异常。

该问题是由于我未能在DI容器中注册服务(Mediatr)而引起的。 通过下载Service Bus的源代码并逐步进行VS调试器,我能够识别出这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM