Azure 服务总线异常 - 提供的锁无效。锁已过期,或者消息已从队列中删除

Azure Service bus exception - The lock supplied is invalid. Either the lock expired, or the message has already been removed from the queue

我已完成所有其他匹配问题,但找不到答案。不同的主要是;我的笔记本电脑上的代码 运行 与我的台式机上的代码相同,一个有效,另一个无效。我的代码在我的桌面上运行良好,然后我对我的代码进行了一些重大更改,我开始收到此异常。所以我尝试回滚,仍然收到异常。然后我尝试删除主题并重新创建它,我仍然收到相同的异常。然后我尝试删除我的开发目录中的所有内容并再次克隆 repo,并从它工作时加载旧代码,但我仍然得到异常。最后我在家里用我的笔记本电脑完成了它,我也没有例外。它适用于我的笔记本电脑,但不适用于我的台式机。有什么想法吗?

我尝试将代码分解到最低限度。接收看起来像这样:

class Program
{
    static ITopicClient topicClient;
    static ISubscriptionClient subscriptionClient;
    static void Main(string[] args)
    {
        string connectionStringServiceBus = "Endpoint=sb://XXX-eventbus2.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=xxxxxx";
        string topicName = "wb-org-events";
        string SubscriptionName = "ExamAdministration";

        subscriptionClient = new SubscriptionClient(connectionStringServiceBus, topicName, SubscriptionName);

        Console.WriteLine("======================================================");
        Console.WriteLine("Press any key to exit after receiving all the messages.");
        Console.WriteLine("======================================================");

        //topicClient = new TopicClient(connectionStringServiceBus, topicName);

        RegisterMessageHandlerAndReceiveMessages();

        Console.ReadKey();
        subscriptionClient.CloseAsync();
       // topicClient.CloseAsync().Wait();
    }
    static void RegisterMessageHandlerAndReceiveMessages()
    {
        // Configure the MessageHandler Options in terms of exception handling, number of concurrent messages to deliver etc.  
        var messageHandlerOptions = new MessageHandlerOptions(ExceptionReceivedHandler)
        {
            MaxConcurrentCalls = 1,
            AutoComplete = false
        };

        // Register the function that will process messages  
        subscriptionClient.RegisterMessageHandler(ProcessMessagesAsync, messageHandlerOptions);
       
    }

    static async Task ProcessMessagesAsync(Message message, CancellationToken token)
    {
        // Process the message  
        Console.WriteLine($"Received message: Sequence Number:{message.SystemProperties.SequenceNumber} \t Body:{Encoding.UTF8.GetString(message.Body)}");

        await subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);
    }
    // Use this Handler to look at the exceptions received on the MessagePump  
    static Task ExceptionReceivedHandler(ExceptionReceivedEventArgs exceptionReceivedEventArgs)
    {
        Console.WriteLine($"Exception:: {exceptionReceivedEventArgs.Exception}.");
        return Task.CompletedTask;
    }
}

此外,今天我开始输出 UTCNow 和 message.SystemProperties.LockeduntilUtc 时间。 LockedUntilUtc 时间过去 17 秒对我来说毫无意义。 我将锁定持续时间从默认值更改为最大值,异常消失了。所以更新不会发生,因此也不例外。这似乎不是一个好的解决方法。

原来我电脑上的时钟大约慢了 40 秒。一旦我同步了它,异常就消失了。