DoconutExtensions
ثبت سرویس و میدلویر
DoconutExtensions (namespace Doconut.Middleware) یک کلاس استاتیک است که سه فراخوانی که هر میزبان Doconut انجام میدهد را شامل میشود: یک ثبت سرویس و دو ثبت میدلویر.
builder.Services.AddDoconut(options => { /* … */ });
// …
app.UseDoconutResources(); // BEFORE UseDoconut()
app.UseDoconut();AddDoconut
IServiceCollection AddDoconut(this IServiceCollection services, Action<DoconutOptions>? configure = null)ساخت DoconutOptions، اعتبارسنجی سریع آنها (به DoconutOptions → اعتبارسنجی استارتاپ مراجعه کنید) و ثبت گراف کامل سرویسها:
| سرویس | طول عمر | نقش |
|---|---|---|
DoconutOptions | Singleton | شیء پیکربندی |
IViewerFactory | Singleton | نگاشت پسوندها به نمایشگرهای فرمت |
IDocumentSessionManager | Singleton | توکن → کش جلسه (IMemoryCache نیز ثبت شده است) |
IDoconutLicenseService | Singleton | مجوز یک بار در استارتاپ بارگذاری میشود (اولویت: LicenseStream → LicenseContent → LicensePath → جستجوی خودکار) |
PageImageService | Singleton | خط لوله تصویر صفحه (واترمارک/چرخش/مقیاس/حاشیهنویسی) |
| امنیت سند (ذخیرهسازی دسترسی) | Singleton | مجوزها برای اتصال توکن به جلسه |
Viewer | Transient | واسط عمومی باز/بسته |
DocumentConverter | Transient | واسط تبدیل — نیاز به افزونه Converter دارد |
Health check "doconut" | — | گزارش وضعیت مجوز/انقضا از طریق بررسی سلامت ASP.NET |
دو رفتار قابل توجه:
- Converter نیاز به افزونه خود دارد. حل
DocumentConverterبدونoptions.AddPlugin<ConverterPlugin>()استثنا میاندازد:
InvalidOperationException: No IDocumentConverter is registered. Add the converter plugin: options.AddPlugin<Doconut.Plugins.Converter.ConverterPlugin>().- اعتبار افزونه در استارتاپ اعتبارسنجی میشود. یک مجوز گمشده، فایل
TRIALقدیمی، یا مجوز پرداختشده بدون قابلیت افزونه ثبتشده در زمانAddDoconut()شکست میخورد. ثبتنامهای موقت/دموی پس از تاریخ انقضا باقی میمانند، در حالی که دروازههای زمان اجرا قابلیتهای منقضیشده را لغو میکنند.
بررسی سلامت با مکانیزم استاندارد ASP.NET Core یکپارچه میشود — اگر میخواهید وضعیت مجوز را در نقطهٔ سلامت خود داشته باشید، آن را نقشهگذاری کنید:
app.MapHealthChecks("/health");UseDoconut
IApplicationBuilder UseDoconut(this IApplicationBuilder app)میلدویر تصویر صفحه Doconut را اضافه میکند. به هر درخواست حاوی پارامتر query ?token= پاسخ میدهد — صفحات، تصویرهای کوچک، جستجو، حاشیهنویسیها، اقدامات صفحه (جدول کامل درخواستها در مفاهیم اصلی → نحوه کار Viewer موجود است). وقتی UnsafeMode برابر false باشد، لایه امنیت سند بهصورت خودکار قبل از آن وصل میشود.
نمونهٔ مرجع درخواستهای ویجت را از طریق یک شاخه مسیر هدایت میکند:
app.MapWhen(
ctx => ctx.Request.Path.Value?.EndsWith("DocImage.axd", StringComparison.OrdinalIgnoreCase) == true,
branch => branch.UseDoconut());UseDoconutResources
IApplicationBuilder UseDoconutResources(this IApplicationBuilder app)JS، CSS، تصاویر و فونتهای جاسازیشده را در DoconutOptions.ResourcesPath (پیشفرض /doconut-res) سرو میکند. اینها فایلهایی هستند که Viewer.ReferenceCss() / ReferenceScripts() برای آنها تگ تولید میکنند.
همیشه قبل از UseDoconut() فراخوانی کنید. اگر ناحیهٔ Viewer خالی بماند و کنسول مرورگر خطاهای 404 برای /doconut-res/... نشان دهد، این فراخوانی گم شده یا در مکان نادرست قرار گرفته است.
مرور ترتیب
app.UseRouting();
app.UseSession(); // required when UnsafeMode = false
app.UseDoconutResources(); // 1st Doconut call
app.UseDoconut(); // 2nd Doconut call (or via a MapWhen branch)آیا این صفحه مفید بود؟