C# 无法访问已释放的对象。对象名称:“tlsxyz”
从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是两个冗余函数,包含从应用程序网关循环调用的相同代码。向主题发送消息的客户端代码为: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
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方法,这是一个框架方法,而不是我的自定义代码