C# 无法访问已释放的对象。对象名称:“tlsxyz”

C# 无法访问已释放的对象。对象名称:“tlsxyz”,c#,azure,azure-functions,azureservicebus,azure-servicebus-topics,C#,Azure,Azure Functions,Azureservicebus,Azure Servicebus Topics,从Azure函数向Azure服务总线标准主题发送消息时,我遇到了一个随机错误 消息错误为: 无法访问已释放的对象。对象名称:“tls2576”,堆栈跟踪: 位于Microsoft.Azure.ServiceBus.Core.MessageSender.OnSendAsyncIList1 消息列表位于 Microsoft.Azure.ServiceBus.RetryPolicy.RunOperationFunc1操作, TimeSpan操作超时时间为 Microsoft.Azure.Service

从Azure函数向Azure服务总线标准主题发送消息时,我遇到了一个随机错误

消息错误为:

无法访问已释放的对象。对象名称:“tls2576”,堆栈跟踪: 位于Microsoft.Azure.ServiceBus.Core.MessageSender.OnSendAsyncIList1 消息列表位于 Microsoft.Azure.ServiceBus.RetryPolicy.RunOperationFunc1操作, TimeSpan操作超时时间为 Microsoft.Azure.ServiceBus.RetryPolicy.RunOperationFunc1操作, TimeSpan操作超时时间为 Microsoft.Azure.ServiceBus.Core.MessageSender.SendAsyncIList1 ServiceBusFunctions.MyTopic.RunHttpRequest请求的消息列表, ILogger日志,myAzureFunction中的ExecutionContext上下文

有时错误中的对象名称为“tls2716”

代码是从包含3个函数的Azure函数实例运行的。Tere是两个冗余函数,包含从应用程序网关循环调用的相同代码。向主题发送消息的客户端代码为:

var message = new Message(Encoding.UTF8.GetBytes(requestBody));

//Custom properties for topis routing
message.UserProperties.Add("P1", P1);
message.UserProperties.Add("P2", P2);
message.UserProperties.Add("P3", P3);


ITopicClient topicClient = new TopicClient(SBConnectionString, CCTopicName);
await topicClient.SendAsync(message);
await topicClient.CloseAsync();

感谢您的帮助

这是由于在从内存中清除后访问已处理的对象而发生的。

问题是在Concurent调用使用静态主题客户端时关闭了它。修复方法不是关闭topicclient以重用它,并在打开连接时最小化连接数和tunning性能

问题在于SendAsync方法,这是一个框架方法,而不是我的自定义代码