![](/img/trans.png)
[英]SignalR trigger System.InvalidOperationException in Microsoft.ApplicationInsights.dll
[英]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.