التثبيت

إضافة Doconut إلى مشروع .NET 6 الخاص بك

عارض Doconut الأساسي لـ .NET 6 يأتي كحزمة NuGet واحدة يمكن دمجها في أي تطبيق ASP.NET Core. الإضافات الاختيارية تستخدم حزمًا منفصلة. تقوم هذه الصفحة بتثبيت الحزمة الأساسية وتسجيل الـ middleware — الحد الأدنى المطلوب قبل أول عملية عرض لك.

تثبيت الحزمة

bash
dotnet add package Doconut.NET6

الأمر بدون تحديد نسخة يثبت أحدث إصدار ثابت. لإعادة إنتاج الإصدار الحالي 26.7.0 بدقة، مرّر النسخة كخيار منفصل:

bash
dotnet add package Doconut.NET6 --version 26.7.0

Doconut.NET6 هو معرف الحزمة. اللاحقة .26.7.0 تنتمي إلى اسم الملف Doconut.NET6.26.7.0.nupkg الذي تم تنزيله ولا تشكل جزءًا من المعرف.

تحديد التكامل قبل الترقية

تم استخدام معرف الحزمة Doconut.NET6 لكل من التكامل الكلاسيكي والحالي لـ .NET 6. لا تختار الوثائق بناءً على اسم الحزمة فقط:

  • DocImage.axd، new Viewer(_cache, _accessor, ...)، OpenDocument(...) المتزامن، والسكربتات المنسوخة يدويًا للعارض تحدد التكامل الكلاسيكي؛
  • AddDoconut()، UseDoconutResources()، عارض مُحقن (Viewer)، وOpenDocumentAsync(...) تحدد التكامل الحالي الموثق هنا.

الدليل المترجم لإعداد الكلاسيكي (classic setup manual) لا يزال متاحًا. استخدم دليل الترحيل لتغيير الأجيال؛ تحديث الحزمة العادي لا يحول إعداد بدء التشغيل، أو عمر العارض، أو موارد المتصفح تلقائيًا.

تسجيل Doconut

AddDoconut() هو نقطة التسجيل الوحيدة — هناك نسخة واحدة فقط، وهو يربط خدمة Viewer، خدمة الترخيص، وبنية العرض داخل حاوية DI.

هناك استدعاءين للـ middleware يكملان الإعداد، وترتيبهما مهم: UseDoconutResources() يجب أن يُنفّذ قبل UseDoconut(). UseDoconut() هو middleware نهائي، لذا استدعاؤه أولًا يعني أن كل طلب إلى مورد /doconut-res لا يصل إلى معالج الموارد ويعود بخطأ 404. ربط الجلسة مطلوب أيضًا — أمان المستند الافتراضي لـ Doconut يتحقق من كل طلب صفحة مقابل حالة جلسة ASP.NET.

csharp
builder.Services.AddDoconut(options =>
{
    options.LicensePath = "Doconut.Viewer.lic";
});
builder.Services.AddDistributedMemoryCache(); // حالة الجلسة تحتاج إلى ذاكرة تخزين مؤقت (MVC/Razor Pages يضيفها بالفعل)
builder.Services.AddSession(); // أمان مستندات Doconut يعتمد على حالة جلسة ASP.NET

app.UseSession();          // استدعِ UseSession() قبل UseDoconut()
app.UseDoconutResources(); // يجب تسجيله قبل UseDoconut()
app.UseDoconut();

جميع الخيارات

DoconutOptions تقبل الخصائص القابلة للتعيين التالية. كل واحدة منها اختيارية — القيم الافتراضية أدناه تُطبق عندما تُترك الخاصية غير مُحددة.

الخاصيةالقيمة الافتراضيةالوصف
ShowDoconutInfofalseعند true، طلب بدون token يُعيد شريط نسخة بدلاً من 404. مفيد كتحقق سريع؛ يُفضل إيقافه في بيئة الإنتاج.
UnsafeModefalseعند true، يتخطى فحص أمان جلسة ASP.NET على طلبات الصفحات. يُفضل إيقافه في بيئة الإنتاج.
MiddlewarePath"/doconut"قيمة التنسيق لنقطة النهاية page-image. يتم التحقق منها، لكنها لا تُنشئ فرعًا بحد ذاتها؛ حافظ على توافقها مع تعيين UseDoconut() الفعلي وBasePath للعميل.
ResourcesPath"/doconut-res"المكان الذي تُخدم منه موارد JS/CSS/الصورة المدمجة.
LicensePath"" (empty string)مسار ملف الترخيص. إذا كان فارغًا يعني الانتقال إلى المصدر التالي، ثم البحث التلقائي.
LicenseContent"" (empty string)محتوى الترخيص الخام — من متغيّر بيئة، مدير أسرار، أو قاعدة بيانات.
LicenseStreamnullالترخيص كتيار، يُقرأ مرة واحدة عند بدء التشغيل.
ResetLicensefalseعلامة توافقية محجوزة. خدمات .NET 6 الحالية تقرأ الترخيص أثناء AddDoconut()؛ أعد تشغيل التطبيق بعد استبدال الترخيص.

أولوية الترخيص عندما يتم تعيين أكثر من مصدر: LicenseStream يتفوق على LicenseContent، ثم LicensePath، ثم البحث التلقائي — راجع إعداد الترخيص.

csharp
builder.Services.AddDoconut(options =>
{
    options.LicensePath     = "Doconut.Viewer.lic";
    options.MiddlewarePath  = "/doconut";     // تنسيق مع تعيين التطبيق وBasePath للعميل
    options.ResourcesPath   = "/doconut-res"; // المكان الذي تُخدم منه ملفات JS/CSS/الصور للعارض
    options.UnsafeMode      = false;          // الحفاظ على أمان الجلسة مفعلاً
    options.ShowDoconutInfo = false;
});

الخطوات التالية

هل كانت هذه الصفحة مفيدة؟