إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
توضح هذه العينة كيفية توصيل واجهة برمجة تطبيقات ويب ASP.NET الأساسية إلى Azure Managed Redis باستخدام مصادقة Microsoft Entra ID مع التدفق DefaultAzureCredential . يتجنب التطبيق المصادقة التقليدية القائمة على سلاسل الاتصال لصالح الوصول المعتمد على الرموز إلى معرف Microsoft Entra ID، والذي يتماشى مع أفضل الممارسات الأمنية الحديثة.
التطبيق هو واجهة ويب ASP.NET الحد الأدنى من Core 8.0 التي:
- ينشئ اتصالا آمنا ومصدقا ب Azure Managed Redis عند بدء التشغيل.
- يعرض نقطة نهاية بسيطة لنظام REST تقرأ وتكتب البيانات إلى الذاكرة المؤقتة.
- يوضح إدارة دورة حياة اتصال Redis بشكل صحيح باستخدام حقن الاعتماد.
انتقل إلى الكود على GitHub
قم باستنساخ مخزن Microsoft.Azure.StackExchangeRedis على GitHub.
المتطلبات الأساسية
- حزمة تطوير .NET 8.0.
- مثيل Azure Managed Redis تم توفيره في اشتراكك في Azure.
- يجب إضافة مستخدم Azure أو مبدأ الخدمة كمستخدم Redis في ذاكرة التخزين المؤقت. في بوابة Azure، اذهب إلى المصادقة في قائمة الموارد، اختر المستخدم أو الخدمة، وأضف هويتك.
- Azure CLI for Local Development Authentication.
حزم NuGet المطلوبة
| الحزمة | الغرض |
|---|---|
Microsoft.Azure.StackExchangeRedis |
طرق الامتداد ل StackExchange.Redis التي تمكن المصادقة المعتمدة على رموز Microsoft Entra ID إلى Azure Managed Redis |
StackExchange.Redis |
مكتبة عملاء Redis الأساسية ل .NET |
Azure.Identity |
يوفر DefaultAzureCredential أنواع بيانات اعتماد أخرى للمصادقة باستخدام خدمات Azure |
Swashbuckle.AspNetCore |
دعم Swagger/OpenAPI لتوثيق واختبار واجهات برمجة التطبيقات |
تثبيت الحزمة الأساسية:
dotnet add package Microsoft.Azure.StackExchangeRedis
هذه الحزمة تجلب StackExchange.Redis وكتبعيات Azure.Identity .
التكوين
يقرأ التطبيق نقطة نهاية Redis من الإعدادات. تحديث appsettings.Development.json:
{
"Redis": {
"Endpoint": "<your-redis-name>.<region>.redis.azure.net:10000"
}
}
إشعار
Azure Managed Redis يستخدم المنفذ 10000 بشكل افتراضي. تنسيق نقطة النهاية يتبع <cache-name>.<region>.redis.azure.net:10000.
تدفق المصادقة
التطوير المحلي
قبل تشغيل التطبيق محليا، قم بالمصادقة باستخدام Azure:
az login
يقوم تلقائيا DefaultAzureCredential بالتقاط بيانات اعتماد Azure CLI الخاصة بك ويستخدمها للحصول على رمز وصول لمورد Redis. هذا النهج يلغي الحاجة إلى إدارة أو تدوير الأسرار محليا.
بيئات الإنتاج
في البيئات المستضافة من قبل Azure مثل App Service، وتطبيقات الحاويات، وAKS، DefaultAzureCredential يستخدم:
- الهوية المدارة - المعينة من النظام أو من قبل المستخدم
- هوية عبء العمل - لسيناريوهات Kubernetes
- متغيرات البيئة - لمصادقة مبدأ الخدمة
لا تحتاج إلى تغيير كودك. ونفس DefaultAzureCredential الشيء يتكيف بسلاسة مع البيئة.
Architecture
خدمة Redis (Services/Redis.cs)
تدير الفئة Redis دورة حياة الاتصال:
var options = new ConfigurationOptions()
{
EndPoints = { endpoint },
LoggerFactory = _loggerFactory,
};
await options.ConfigureForAzureWithTokenCredentialAsync(new DefaultAzureCredential());
_connection = await ConnectionMultiplexer.ConnectAsync(options);
النقاط الرئيسية:
-
ConfigureForAzureWithTokenCredentialAsyncهي طريقة توسعة منMicrosoft.Azure.StackExchangeRedisتقوم بإعداد المصادقة القائمة على الرموز -
DefaultAzureCredentialيتعامل تلقائيا مع اكتساب الرموز وتحديثها - يقوم التطبيق بإنشاء الاتصال عند بدء التشغيل ويشاركه بين الطلبات
حقن الاعتماد (Program.cs)
يقوم التطبيق بتسجيل خدمة Redis كخدمة فردية ويقوم بتهيئتها أثناء بدء التشغيل:
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 (Controllers/SampleController.cs)
تقوم وحدة التحكم بحقن الخدمة Redis وتعرض العمليات الأساسية للذاكرة المؤقتة:
-
احصل
/Sampleعلى : يقرأ ختم الزمن للزيارة السابقة من الذاكرة المؤقتة ويحدثه مع الوقت الحالي
تشغيل التطبيق
تأكد من أنك متحقق من صحتك:
az loginقم بتحديث نقطة نهاية Redis في
appsettings.Development.json.شغّل التطبيق:
dotnet runانتقل إلى
https://localhost:<port>/swaggerالوصول إلى واجهة Swagger.
الناتج المتوقع
عند استدعاء نقطة GET /Sample النهاية:
الطلب الأول:
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)
تظهر سجلات الكونسول:
info: Microsoft.Azure.StackExchangeRedis.Sample.AspNet.Controllers.SampleController
Handled GET request. Previous visit time: 2026-01-30T14:23:45
تفاصيل التنفيذ الرئيسية
تحديث الرموز: تقوم المكتبة
Microsoft.Azure.StackExchangeRedisتلقائيا بتحديث الرموز قبل انتهاء صلاحيتها، لذلك لا تحتاج إلى التعامل مع التحديث يدويا.مرونة الاتصال: يدير من
ConnectionMultiplexerStackExchange.Redis منطق إعادة الاتصال بنفسه.تنظيف الموارد: تقوم
IDisposableالخدمةRedisبتنفيذ إغلاق الاتصال بشكل صحيح عند إيقاف تشغيل التطبيق.تكامل السجلات: يعمل عميل Redis مع . NET
ILoggerFactoryلتسجيل المخرجات الموحدة.
استكشاف الأخطاء وإصلاحها
| مشكلة | نوع الحل |
|---|---|
No connection is available |
تحقق من تنسيق نقطة النهاية والمنفذ (10000). تأكد من أن نسخة Redis مجهزة ومتاحة. |
AuthenticationFailedException |
قم بتحديث az login بيانات الاعتماد. تحقق من إضافة هويتك كمستخدم Redis تحت قسم المصادقة في قائمة الموارد. |
Unauthorized |
تأكد من إضافة هوية Microsoft Entra ID الخاصة بك كمستخدم Redis على نسخة Azure Managed Redis. لمزيد من المعلومات، راجع استخدام معرف Microsoft Entra لمصادقة ذاكرة التخزين المؤقت. |