Triệu chứng
Hãy xem xét tình huống sau:
-
Bạn đã sử dụng ứng dụng Microsoft .NET Framework luôn được mã hóa trong SQL Server 2016 hoặc Azure SQL cơ sở dữ liệu.
-
Các khóa cột cái chính cho các ứng dụng này được lưu trữ trong nút Azure Key Vault.
Trong trường hợp này, các ứng dụng có kinh nghiệm deadlocks. Do đó, các ứng dụng trở nên không phản hồi (treo) hoặc thời gian vắng mặt.
Deadlocks có thể xảy ra trong khi cố gắng có được hoặc làm mới mã thông báo xác thực cho các Azure Key Vault.
Nguyên nhân
Khi ứng dụng truy vấn các cột được mã hóa trong cơ sở dữ liệu, nhà cung cấp dữ liệu .NET Framework cho SQL Server gọi đến nhà cung cấp dịch vụ Azure Key luôn được mã hóa. Điều này, trong lần lượt, hãy gọi một nhiệm vụ không đồng bộ dựa trên ứng dụng để mua lại hoặc làm mới một mã thông báo cho Azure Key Vault. Đường dẫn mã này trong nhà cung cấp Azure Key Vault để luôn được mã hóa các phiên bản dành cho gói truy nhập NuGet 2.0. x và 1. x. x dễ bị deadlocks vì nó gọi một số phương pháp không đồng bộ theo cách không chính xác.
Giải pháp
Vấn đề lần đầu tiên được khắc phục trong Azure Key Vault Provider for always Phiên bản 2.1.0.Nếu bạn sử dụng nhà cung cấp dịch vụ, chúng tôi khuyên bạn nên gia hạn và triển khai ứng dụng của bạn để nó sử dụng Azure Key Vault Provider for always đã mã hóa Phiên bản 2.1.0 trở lên.