DoconutExtensions

ثبت سرویس و میدل‌ویر

DoconutExtensions (namespace Doconut.Middleware) یک کلاس استاتیک است که سه فراخوانی که هر میزبان Doconut انجام می‌دهد را شامل می‌شود: یک ثبت سرویس و دو ثبت میدل‌ویر.

csharp
builder.Services.AddDoconut(options => { /* … */ });
// …
app.UseDoconutResources(); // BEFORE UseDoconut()
app.UseDoconut();

AddDoconut

text
IServiceCollection AddDoconut(this IServiceCollection services, Action<DoconutOptions>? configure = null)

ساخت DoconutOptions، اعتبارسنجی سریع آن‌ها (به DoconutOptions → اعتبارسنجی استارتاپ مراجعه کنید) و ثبت گراف کامل سرویس‌ها:

سرویسطول عمرنقش
DoconutOptionsSingletonشیء پیکربندی
IViewerFactorySingletonنگاشت پسوندها به نمایشگرهای فرمت
IDocumentSessionManagerSingletonتوکن → کش جلسه (IMemoryCache نیز ثبت شده است)
IDoconutLicenseServiceSingletonمجوز یک بار در استارتاپ بارگذاری می‌شود (اولویت: LicenseStreamLicenseContentLicensePath → جستجوی خودکار)
PageImageServiceSingletonخط لوله تصویر صفحه (واترمارک/چرخش/مقیاس/حاشیه‌نویسی)
امنیت سند (ذخیره‌سازی دسترسی)Singletonمجوزها برای اتصال توکن به جلسه
ViewerTransientواسط عمومی باز/بسته
DocumentConverterTransientواسط تبدیل — نیاز به افزونه Converter دارد
Health check "doconut"گزارش وضعیت مجوز/انقضا از طریق بررسی سلامت ASP.NET

دو رفتار قابل توجه:

  • Converter نیاز به افزونه خود دارد. حل DocumentConverter بدون options.AddPlugin<ConverterPlugin>() استثنا می‌اندازد:
text
InvalidOperationException: No IDocumentConverter is registered. Add the converter plugin: options.AddPlugin<Doconut.Plugins.Converter.ConverterPlugin>().
  • اعتبار افزونه در استارتاپ اعتبارسنجی می‌شود. یک مجوز گمشده، فایل TRIAL قدیمی، یا مجوز پرداخت‌شده بدون قابلیت افزونه ثبت‌شده در زمان AddDoconut() شکست می‌خورد. ثبت‌نام‌های موقت/دموی پس از تاریخ انقضا باقی می‌مانند، در حالی که دروازه‌های زمان اجرا قابلیت‌های منقضی‌شده را لغو می‌کنند.

بررسی سلامت با مکانیزم استاندارد ASP.NET Core یکپارچه می‌شود — اگر می‌خواهید وضعیت مجوز را در نقطهٔ سلامت خود داشته باشید، آن را نقشه‌گذاری کنید:

csharp
app.MapHealthChecks("/health");

UseDoconut

text
IApplicationBuilder UseDoconut(this IApplicationBuilder app)

میلد‌ویر تصویر صفحه Doconut را اضافه می‌کند. به هر درخواست حاوی پارامتر query ?token= پاسخ می‌دهد — صفحات، تصویرهای کوچک، جستجو، حاشیه‌نویسی‌ها، اقدامات صفحه (جدول کامل درخواست‌ها در مفاهیم اصلی → نحوه کار Viewer موجود است). وقتی UnsafeMode برابر false باشد، لایه امنیت سند به‌صورت خودکار قبل از آن وصل می‌شود.

نمونهٔ مرجع درخواست‌های ویجت را از طریق یک شاخه مسیر هدایت می‌کند:

csharp
app.MapWhen(
    ctx => ctx.Request.Path.Value?.EndsWith("DocImage.axd", StringComparison.OrdinalIgnoreCase) == true,
    branch => branch.UseDoconut());

UseDoconutResources

text
IApplicationBuilder UseDoconutResources(this IApplicationBuilder app)

JS، CSS، تصاویر و فونت‌های جاسازی‌شده را در DoconutOptions.ResourcesPath (پیش‌فرض /doconut-res) سرو می‌کند. این‌ها فایل‌هایی هستند که Viewer.ReferenceCss() / ReferenceScripts() برای آن‌ها تگ تولید می‌کنند.

همیشه قبل از UseDoconut() فراخوانی کنید. اگر ناحیهٔ Viewer خالی بماند و کنسول مرورگر خطاهای 404 برای /doconut-res/... نشان دهد، این فراخوانی گم شده یا در مکان نادرست قرار گرفته است.

مرور ترتیب

csharp
app.UseRouting();
app.UseSession();          // required when UnsafeMode = false
app.UseDoconutResources(); // 1st Doconut call
app.UseDoconut();          // 2nd Doconut call (or via a MapWhen branch)

آیا این صفحه مفید بود؟