SqlClient Active Directory-verificatie is verplaatst naar een afzonderlijk pakket

ASP.NET Core 11 neemt transitief Microsoft.Data.SqlClient 7.x op (in plaats van 5.x in .NET 10). Vanaf Microsoft.Data.SqlClient 6.0 bevinden de Microsoft Entra ID (voorheen Azure Active Directory) verificatieproviders zich niet meer in het hoofdpakket Microsoft.Data.SqlClient; ze worden verzonden in een afzonderlijk Microsoft.Data.SqlClient.Extensions.Azure-pakket. Apps die een Entra ID Authentication=-waarde in hun SQL-verbindingsreeks gebruiken, moeten een verwijzing naar dit pakket toevoegen.

Geïntroduceerde versie

.NET 11 preview 3

Vorig gedrag

Voorheen bevatte het pakket Microsoft.Data.SqlClient 5.x de Entra ID-verificatieproviders. Een verbindingsreeks zoals Server=...;Database=...;Authentication=Active Directory Default werkte meteen voor elke ASP.NET Core-app die indirect Microsoft.Data.SqlClient opnam (bijvoorbeeld via Microsoft.Extensions.Caching.SqlServer of een Entity Framework Core SQL Server-provider).

Nieuw gedrag

Vanaf ASP.NET Core 11 is de transitieve versie van Microsoft.Data.SqlClient 7.x, die niet langer wordt geleverd met de Entra ID-authenticatieproviders. Als uw verbindingsreeks een van de Active Directory *Authentication=-waarden gebruikt en u het Microsoft.Data.SqlClient.Extensions.Azure-pakket niet hebt toegevoegd, krijgt u een runtime-fout die vergelijkbaar is met:

Cannot find an authentication provider for 'ActiveDirectoryDefault'.
Install the 'Microsoft.Data.SqlClient.Extensions.Azure' NuGet package to use Active Directory (Entra ID) authentication methods.

Dit is van invloed op apps die gebruikmaken van Microsoft.Extensions.Caching.SqlServer (DistributedSqlServerCache), apps die gebruikmaken van de EF Core SQL Server-provider en elk ander codepad dat transitief Microsoft.Data.SqlClient gebruikt en Entra ID-verificatie gebruikt.

Type van brekende verandering

Deze wijziging is een gedragswijziging.

Reden voor wijziging

De wijziging om Microsoft Entra ID-authenticatie uit Microsoft.Data.SqlClient te verplaatsen, werd doorgevoerd in de upstreamrelease Microsoft.Data.SqlClient 6.0. ASP.NET Core 11 neemt die wijziging over door de SqlClient-versie te upgraden waar het transitief van afhankelijk is. Zie dotnet/aspnetcore#66179 voor meer informatie.

Als uw app gebruikmaakt van een SQL-verbindingsreeks met een Active Directory *Authentication= waarde, voegt u een PackageReference toe aan Microsoft.Data.SqlClient.Extensions.Azure:

<ItemGroup>
  <PackageReference Include="Microsoft.Data.SqlClient.Extensions.Azure" 
    Version="1.0.0" />
</ItemGroup>

De ASP.NET Core projectsjablonen voor afzonderlijke accounts zijn bijgewerkt om deze verwijzing toe te voegen voor de Azure SQL configuraties die ze ondersteunen. Voor nieuwe projecten is geen handmatige wijziging vereist.

Betreffende API's

None. De onderbreking is een transitieve runtimevereiste voor het installeren van een NuGet-pakket. Geen types in Microsoft.AspNetCore.* worden beïnvloed.