Aracılığıyla paylaş


Azure Yönetilen Redis örneği - ASP.NET Core Web API'si

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:

  1. Başlangıçta Azure Yönetilen Redis'e güvenli, kimliği doğrulanmış bir bağlantı kurar.
  2. Verileri okuyan ve önbelleğe yazan basit bir REST uç noktasını kullanıma sunar.
  3. 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.StackExchangeRedis için belirteç tabanlı kimlik doğrulamayı ayarlayan bir uzantı yöntemidir
  • DefaultAzureCredential belirteç 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

  1. Kimliğinizin doğrulanmış olduğundan emin olun:

    az login
    
  2. appsettings.Development.json içindeki Redis uç noktasını güncelleyin.

  3. Uygulamayı çalıştırın:

    dotnet run
    
  4. https://localhost:<port>/swagger Swagger 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ığı: ConnectionMultiplexer StackExchange.Redis'ten gelen, yeniden bağlanma mantığını kendi başına yönetir.

  • Kaynak temizleme: Redis hizmeti, uygulama kapatıldığında bağlantıyı düzgün bir şekilde kapatmak için IDisposable uygular.

  • 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.