Cannot access a disposed object. Object name: ‘tlsxyz’
从 Azure 函数向 Azure 服务总线(标准)主题发送消息时遇到随机错误。
消息错误是:
Cannot access a disposed object. Object name: ‘tls2576’., Stacktrace :
at Microsoft.Azure.ServiceBus.Core.MessageSender.OnSendAsync(IList1 1 operation,
messageList) at
Microsoft.Azure.ServiceBus.RetryPolicy.RunOperation(Func
TimeSpan operationTimeout) at
Microsoft.Azure.ServiceBus.RetryPolicy.RunOperation(Func1 operation, 1
TimeSpan operationTimeout) at
Microsoft.Azure.ServiceBus.Core.MessageSender.SendAsync(IList
messageList) at ServiceBusFunctions.MyTopic.Run(HttpRequest req,
ILogger log, ExecutionContext context) in myAzureFunction
有时错误中的对象名称是//’tls2716//’。
代码从包含 3 个函数的 Azure 函数实例运行。有 2 个冗余功能 APP 包含从应用程序网关循环调用的相同代码。向主题发送消息的客户端代码是:
1
2 3 4 5 6 7 8 9 10 11 |
var message = new Message(Encoding.UTF8.GetBytes(requestBody));
//Custom properties for topis routing ITopicClient topicClient = new TopicClient(SBConnectionString, CCTopicName); |
感谢您的帮助
问题是在并发调用使用静态主题客户端时关闭它。修复方法是不要关闭 topicclient 以重用它,并在打开连接时最小化连接数和调整性能
这是由于在从内存中清除后访问已处置的对象所致。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/269621.html