Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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:
- Biztonságos, hitelesített kapcsolatot hoz létre az Azure Managed Redis szolgáltatással az indításkor.
- Egy egyszerű REST-végpontot tesz elérhetővé, amely adatokat olvas és ír a gyorsítótárba.
- 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:
-
ConfigureForAzureWithTokenCredentialAsyncegy kiterjesztési metódus aMicrosoft.Azure.StackExchangeRedis-ből, amely jogkivonatalapú hitelesítést állít be -
DefaultAzureCredentialautomatikusan 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
Győződjön meg arról, hogy hitelesítve van:
az loginFrissítse a Redis-végpontot a következőben
appsettings.Development.json: .Futtassa az alkalmazást:
dotnet runA Swagger felhasználói felületének eléréséhez lépjen a
https://localhost:<port>/swaggerpontra.
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.StackExchangeRediskó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
ConnectionMultiplexerStackExchange.Redis önállóan kezeli az újracsatlakozási logikát.Erőforrás-törlés: A
Redisszolgáltatás megvalósítjaIDisposablea 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
ILoggerFactoryaz 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. |