Symptomy
Rozpatrzmy następujący scenariusz:
-
Masz aplikacje platformy Microsoft .NET Framework, które są zawsze szyfrowane w programie SQL Server 2016 lub usłudze Azure SQL Database.
-
Klucze główne kolumny dla tych aplikacji są przechowywane w magazynie kluczy platformy Azure.
W tym scenariuszu występują zakleszczenia aplikacji. Oznacza to, że aplikacje przestaną odpowiadać (zawieszają się) lub przekroczą limit czasu.
Podczas prób uzyskania lub odświeżenia tokenu uwierzytelniania dla magazynu kluczy platformy Azure mogą wystąpić zakleszczenia.
Przyczyna
Gdy aplikacja bada zaszyfrowane kolumny w bazie danych, dostawca danych programu .NET Framework dla programu SQL Server wywołuje dostawcę magazynu kluczy platformy Azure pod kątem zawsze szyfrowanych. To z kolei umożliwia nawiązania asynchronicznego zadania opartego na aplikacji, które pobiera lub odświeża token dla magazynu kluczy platformy Azure. Ta ścieżka kodu w dostawcy magazynu kluczy platformy Azure dla zawsze zaszyfrowanych pakietów NuGet w wersjach 2.0. x i 1. x. x jest podatna na zakleszczenia, ponieważ w niepoprawnej formie wywołuje niektóre metody asynchroniczne.
Rozwiązanie
Problem został po raz pierwszy rozwiązany przez dostawcę magazynu kluczy platformy Azure dla zawsze zaszyfrowanej wersji 2.1.0.Jeśli korzystasz z usługi Dostawca magazynu kluczy zawsze zaszyfrowanych i Azure, zalecamy odbudowanie i ponowne wdrożenie aplikacji, tak aby korzystała z dostawcy magazynu kluczy platformy Azure, aby zawsze była szyfrowana w wersji 2.1.0 lub nowszej.