Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu örnek, Microsoft Entra ID kimlik doğrulaması ile DefaultAzureCredential akışını kullanarak ASP.NET Core Web API'sini Azure Yönetilen Redis'e nasıl bağlayacağınızı gösterir. Uygulama, geleneksel bağlantı dizesi tabanlı kimlik doğrulamasını modern güvenlik en iyi yöntemleriyle uyumlu olan belirteç tabanlı Microsoft Entra ID erişimi lehine tercih eder.
Uygulama, minimal bir ASP.NET Core 8.0 Web API'sidir ve aşağıdakileri içerir:
- Başlangıçta Azure Yönetilen Redis'e güvenli, kimliği doğrulanmış bir bağlantı kurar.
- Verileri okuyan ve önbelleğe yazan basit bir REST uç noktasını kullanıma sunar.
- Bağımlılık enjeksiyonu kullanarak Redis bağlantı yaşam döngüsünü doğru yönetmeyi gösterir.
GitHub'da koda atlayın
GitHub'da Microsoft.Azure.StackExchangeRedis deposunu kopyalayın.
Önkoşullar
- .NET 8.0 SDK.
- Azure aboneliğinizde sağlanan bir Azure Yönetilen Redis örneği.
- Azure kullanıcınız veya hizmet sorumlunuz önbellekte Redis kullanıcısı olarak eklenmelidir. Azure portalında Kaynak menüsünde Kimlik Doğrulaması'na gidin, Kullanıcı veya hizmet sorumlusu'nı seçin ve kimliğinizi ekleyin.
- Yerel geliştirme kimlik doğrulaması için Azure CLI.
Gerekli NuGet Paketleri
| Package | Amaç |
|---|---|
Microsoft.Azure.StackExchangeRedis |
Azure Yönetilen Redis'e Microsoft Entra ID belirteci tabanlı kimlik doğrulamasını etkinleştiren StackExchange.Redis uzantı yöntemleri |
StackExchange.Redis |
.NET için temel alınan Redis istemci kitaplığı |
Azure.Identity |
Kimlik doğrulaması için DefaultAzureCredential ve diğer kimlik bilgileri türlerini Azure hizmetleriyle sağlar. |
Swashbuckle.AspNetCore |
API belgeleri ve testi için Swagger/OpenAPI desteği |
Birincil paketi yükleyin:
dotnet add package Microsoft.Azure.StackExchangeRedis
Bu paket StackExchange.Redis ve Azure.Identity'yi bağımlılık olarak getirir.
Konfigürasyon
Uygulama Redis uç noktasını yapılandırmadan okur. Güncelleme appsettings.Development.json:
{
"Redis": {
"Endpoint": "<your-redis-name>.<region>.redis.azure.net:10000"
}
}
Uyarı
Azure Yönetilen Redis varsayılan olarak bağlantı noktasını 10000 kullanır. Uç nokta biçimi aşağıdaki gibidir <cache-name>.<region>.redis.azure.net:10000.
Kimlik Doğrulama Akışı
Yerel Geliştirme
Uygulamayı yerel olarak çalıştırmadan önce Azure ile kimlik doğrulama:
az login
Azure DefaultAzureCredential CLI kimlik bilgilerinizi otomatik olarak alır ve Redis kaynağı için erişim belirteci almak için bunları kullanır. Bu yaklaşım gizli bilgileri yerel olarak yönetme veya değiştirme gereksinimini ortadan kaldırır.
Üretim ortamları
App Service, Container Apps ve AKS DefaultAzureCredential gibi Azure tarafından barındırılan ortamlarda şunları kullanır:
- Yönetilen Kimlik - sistem tarafından atanan veya kullanıcı tarafından atanan
- İş Yükü Kimliği - Kubernetes senaryoları için
- Ortam değişkenleri - hizmet sorumlusu kimlik doğrulaması için
Kodunuzu değiştirmeniz gerekmez.
DefaultAzureCredential Bu da ortama sorunsuz bir şekilde uyum sağlar.
Architecture
Redis hizmeti (Services/Redis.cs)
Redis sınıfı bağlantı yaşam döngüsünü yönetir:
var options = new ConfigurationOptions()
{
EndPoints = { endpoint },
LoggerFactory = _loggerFactory,
};
await options.ConfigureForAzureWithTokenCredentialAsync(new DefaultAzureCredential());
_connection = await ConnectionMultiplexer.ConnectAsync(options);
Önemli noktalar:
-
ConfigureForAzureWithTokenCredentialAsync,Microsoft.Azure.StackExchangeRedisiçin belirteç tabanlı kimlik doğrulamayı ayarlayan bir uzantı yöntemidir -
DefaultAzureCredentialbelirteç alma ve yenileme işlemlerini otomatik olarak yönetir - Uygulama başlangıçta bağlantıyı bir kez kurar ve istekler arasında paylaşır
Bağımlılık enjeksiyonu (Program.cs)
Uygulama Redis hizmetini tekil olarak kaydeder ve başlatma sırasında başlatır:
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 Denetleyicisi (Controllers/SampleController.cs)
Denetleyici Redis hizmetini enjekte eder ve temel önbellek işlemlerini gösterir:
-
GET
/Sample: Önbellekten önceki ziyaret zaman damgasını okur ve geçerli saatle güncelleştirir
Uygulamayı çalıştırma
Kimliğinizin doğrulanmış olduğundan emin olun:
az loginappsettings.Development.jsoniçindeki Redis uç noktasını güncelleyin.Uygulamayı çalıştırın:
dotnet runhttps://localhost:<port>/swaggerSwagger kullanıcı arabirimine erişmek için adresine gidin.
Beklenen çıkış
Uç birim çağırıldığında GET /Sample:
İlk istek:
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)
Konsol günlükleri şu şekilde görüntülenir:
info: Microsoft.Azure.StackExchangeRedis.Sample.AspNet.Controllers.SampleController
Handled GET request. Previous visit time: 2026-01-30T14:23:45
Önemli uygulama ayrıntıları
Belirteç yenileme: Kitaplık
Microsoft.Azure.StackExchangeRedis, süresi dolmadan önce belirteçleri otomatik olarak yeniler, bu nedenle yenilemeyi el ile işlemeniz gerekmez.Bağlantı dayanıklılığı:
ConnectionMultiplexerStackExchange.Redis'ten gelen, yeniden bağlanma mantığını kendi başına yönetir.Kaynak temizleme:
Redishizmeti, uygulama kapatıldığında bağlantıyı düzgün bir şekilde kapatmak içinIDisposableuygular.Günlük tümleştirmesi: Redis istemcisi, .NET'in birleşik günlük çıkışı sağlamak için çalışır.
Sorun giderme
| Sorun | Çözüm |
|---|---|
No connection is available |
Uç nokta biçimini ve bağlantı noktasını (10000) doğrulayın. Redis örneğinin sağlandığından ve erişilebilir olduğundan emin olun. |
AuthenticationFailedException |
Kimlik bilgilerini yenilemek için komutunu çalıştırın az login . Kaynak menüsünde kimlik doğrulaması altında kimliğinizin Redis kullanıcısı olarak eklendiğini doğrulayın. |
Unauthorized |
Microsoft Entra ID kimliğinizin Azure Yönetilen Redis örneğine Redis kullanıcısı olarak eklendiğinden emin olun. Daha fazla bilgi için bkz. Önbellek kimlik doğrulaması için Microsoft Entra Id kullanma. |