Symptomen
Neem het volgende scenario:
-
U hebt Microsoft .NET Framework-toepassingen die altijd worden versleuteld in SQL Server 2016 of in Azure SQL database.
-
De kolom hoofdsleutels voor deze toepassingen worden opgeslagen in de Azure-sleutel kluis.
In dit scenario hebben de toepassingen ervaring met deadlocks. Daarom reageren de toepassingen niet meer (hangen) of time-out.
De deadlocks kunnen optreden tijdens een poging om een authenticatietoken te verkrijgen of te vernieuwen voor de Azure-sleutel kluis.
Oorzaak
Wanneer met een toepassing versleutelde kolommen in de database worden versleuteld, roept de .NET Framework-gegevensprovider voor SQL Server de provider van Azure Key kluizen aan voor altijd versleuteld. Op deze wijze roept u op basis van een toepassing een asynchrone taak aan die een token van Azure Key-kluis ophaalt of vernieuwt. Dit code pad in azure-sleutel kluis provider voor altijd versleutelde pakket versies van NuGet 2.0. x en 1. x. x zijn gevoelig voor de deadlock, omdat er een aantal asynchrone methoden op een onjuiste manier wordt aangeroepen.
Oplossing
Het probleem is voor het eerst opgelost in Azure Key kluis provider voor altijd versleutelde versie 2.1.0.Als u altijd versleuteld en Azure sleutel kluis providergebruikt, raden we u ten zeerste aan de toepassing opnieuw op te bouwen en te implementeren, zodat deze gebruikmaakt van de provider van Azure Key-kluis voor altijd versleutelde versie 2.1.0 of hoger.