Azure Managed Redis példa - ASP.NET Core Web API

Ez a minta bemutatja, hogyan csatlakoztathat egy ASP.NET Core Web API-t az Azure Managed Redishez a Microsoft Entra ID-hitelesítés és a DefaultAzureCredential folyamat használatával. Az alkalmazás elkerüli a hagyományos kapcsolati karakterlánc alapú hitelesítést a tokenalapú Microsoft Entra ID hozzáférés javára, amely igazodik a modern biztonsági legjobb gyakorlatokhoz.

Az alkalmazás minimális ASP.NET Core 8.0 webes API, amely:

  1. Biztonságos, hitelesített kapcsolatot hoz létre az Azure Managed Redis szolgáltatással az indításkor.
  2. Egy egyszerű REST-végpontot tesz elérhetővé, amely adatokat olvas és ír a gyorsítótárba.
  3. A Redis-kapcsolat életciklusának megfelelő kezelését mutatja be függőséginjektálás használatával.

Ugrás a GitHubon található kódra

Klónozza a Microsoft.Azure.StackExchangeRedis adattárat a GitHubon.

Előfeltételek

  • .NET 8.0 SDK.
  • Az Azure-előfizetésed keretén belül kiépített Azure Managed Redis példány.
  • Az Azure felhasználót vagy szolgáltatási főszereplőt Redis-felhasználóként kell hozzáadni a gyorsítótárban. Az Azure Portalon lépjen az Erőforrás menü Hitelesítés elemére, válassza a Felhasználó vagy szolgáltatásnév lehetőséget, és adja hozzá az identitását.
  • Azure CLI a helyi fejlesztési hitelesítéshez.

Szükséges NuGet-csomagok

Package Cél
Microsoft.Azure.StackExchangeRedis A StackExchange.Redis bővítménymetódusai, amelyek engedélyezik a Microsoft Entra ID tokenalapú hitelesítését az Azure Managed Redisben
StackExchange.Redis Az alapul szolgáló Redis-ügyfélkódtár a .NET-hez
Azure.Identity Az Azure-szolgáltatásokkal való hitelesítéshez biztosít DefaultAzureCredential és egyéb hitelesítő adatokat
Swashbuckle.AspNetCore Swagger/OpenAPI-támogatás API-dokumentációhoz és teszteléshez

Telepítse az elsődleges csomagot:

dotnet add package Microsoft.Azure.StackExchangeRedis

Ez a csomag behozza a StackExchange.Redis és Azure.Identity modulokat függőségként.

Konfiguráció

Az alkalmazás beolvassa a Redis-végpontot a konfigurációból. Frissítés appsettings.Development.json:

{
  "Redis": {
    "Endpoint": "<your-redis-name>.<region>.redis.azure.net:10000"
  }
}

Megjegyzés:

Az Azure Managed Redis alapértelmezés szerint portot 10000 használ. A végpont formátuma a következő: <cache-name>.<region>.redis.azure.net:10000.

Hitelesítési folyamat

Helyi fejlesztés

Az alkalmazás helyi futtatása előtt hitelesítse magát az Azure-ral:

az login

A DefaultAzureCredential rendszer automatikusan felveszi az Azure CLI hitelesítő adatait, és felhasználja őket a Redis-erőforrás hozzáférési jogkivonatának lekéréséhez. Ez a megközelítés szükségtelenné teszi a titkos kódok helyi kezelését vagy elforgatását.

Termelési környezetek

Az Azure által üzemeltetett környezetekben, például az App Service-ben, a Container Appsben és az AKS-ben a DefaultAzureCredential következőket használja:

  • Felügyelt identitás – rendszer által hozzárendelt vagy felhasználó által hozzárendelt
  • Számítási feladatok identitása – Kubernetes-forgatókönyvekhez
  • Környezeti változók – szolgáltatásfőhitelesítéshez

Nem kell módosítania a kódot. Ugyanez DefaultAzureCredential zökkenőmentesen alkalmazkodik a környezethez.

Architecture

Redis szolgáltatás (Services/Redis.cs)

Az Redis osztály kezeli a kapcsolat életciklusát:

var options = new ConfigurationOptions()
{
    EndPoints = { endpoint },
    LoggerFactory = _loggerFactory,
};

await options.ConfigureForAzureWithTokenCredentialAsync(new DefaultAzureCredential());

_connection = await ConnectionMultiplexer.ConnectAsync(options);

Összefoglalás:

  • ConfigureForAzureWithTokenCredentialAsync egy kiterjesztési metódus a Microsoft.Azure.StackExchangeRedis-ből, amely jogkivonatalapú hitelesítést állít be
  • DefaultAzureCredential automatikusan kezeli a tokenek beszerzését és frissítését
  • Az alkalmazás az indításkor egyszer létrehozza a kapcsolatot, és megosztja a kérések között.

Függőséginjektálás (Program.cs)

Az alkalmazás egyszeriként regisztrálja a Redis szolgáltatást, és inicializálja azt az indítás során:

builder.Services.AddSingleton<Redis>();

// Initialize Redis connection
using (var scope = app.Services.CreateScope())
{
    var redis = scope.ServiceProvider.GetRequiredService<Redis>();
    var endpoint = app.Configuration.GetValue<string>("Redis:Endpoint");
    await redis.ConnectAsync(endpoint);
}

API-vezérlő (Controllers/SampleController.cs)

A vezérlő injektálja a szolgáltatást, és bemutatja az Redis alapvető gyorsítótár-műveleteket:

  • GET /Sample: Beolvassa az előző látogatási időbélyeget a gyorsítótárból, és frissíti az aktuális időponttal

Az alkalmazás futtatása

  1. Győződjön meg arról, hogy hitelesítve van:

    az login
    
  2. Frissítse a Redis-végpontot a következőben appsettings.Development.json: .

  3. Futtassa az alkalmazást:

    dotnet run
    
  4. A Swagger felhasználói felületének eléréséhez lépjen a https://localhost:<port>/swagger pontra.

Várt kimenet

A végpont meghívásakor GET /Sample :

Első kérés:

Previous visit was at: 
(Empty value since no previous visit exists)
**Subsequent requests:**
Previous visit was at: 2026-01-30T14:23:45
(Returns the ISO 8601 formatted timestamp of the previous request)

A konzolnaplók a következőt jelenítik meg:

info: Microsoft.Azure.StackExchangeRedis.Sample.AspNet.Controllers.SampleController
      Handled GET request. Previous visit time: 2026-01-30T14:23:45

Főbb megvalósítási részletek

  • Jogkivonat frissítése: A Microsoft.Azure.StackExchangeRedis kódtár automatikusan frissíti a jogkivonatokat a lejáratuk előtt, így nem kell manuálisan kezelnie a frissítést.

  • Kapcsolat rugalmassága: A ConnectionMultiplexer StackExchange.Redis önállóan kezeli az újracsatlakozási logikát.

  • Erőforrás-törlés: A Redis szolgáltatás megvalósítja IDisposable a kapcsolat megfelelő bezárását, amikor az alkalmazás leáll.

  • Naplózási integráció: A Redis kliens együttműködik a .NET ILoggerFactory az egységesített naplózási kimenet érdekében.

Hibaelhárítás

Probléma Rezolúció
No connection is available Ellenőrizze a végpont formátumát és portját (10000). Győződjön meg arról, hogy a Redis-példány ki van építve és elérhető.
AuthenticationFailedException Futtassa az login a hitelesítő adatok frissítéséhez. Ellenőrizze, hogy az identitása Redis-felhasználóként van-e hozzáadva az Erőforrás menü Hitelesítés területén.
Unauthorized Győződjön meg arról, hogy a Microsoft Entra ID azonosítója Redis-felhasználóként van hozzáadva az Azure által kezelt Redis-példányhoz. További információ: A Microsoft Entra ID használata gyorsítótár-hitelesítéshez.