نصب

افزودن Doconut به پروژهٔ .NET 6 شما

نمایشگر پایه Doconut برای .NET 6 به‌صورت یک بسته NuGet عرضه می‌شود که به هر برنامه ASP.NET Core متصل می‌شود. پلاگین‌های اختیاری از بسته‌های جداگانه استفاده می‌کنند. این صفحه بسته پایه را نصب کرده و میدلور را ثبت می‌کند — حداقل مورد نیاز پیش از اولین رندر شما.

نصب بسته

bash
dotnet add package Doconut.NET6

دستور بدون نسخه، آخرین نسخه پایدار را نصب می‌کند. برای بازتولید دقیق نسخهٔ فعلی ۲۶.۷.۰، نسخه را به‌عنوان گزینه‌ای جداگانه پاس دهید:

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(...) یکپارچه‌سازی فعلی مستند شده در اینجا را شناسایی می‌کنند.

راهنمای تنظیم کلاسیک ترجمه‌شده در اینجا همچنان در دسترس است. از راهنمای مهاجرت برای تغییر نسل‌ها استفاده کنید؛ به‌روزرسانی معمولی بسته، استارتاپ، طول عمر نمایشگر یا منابع مرورگر را به‌صورت خودکار تبدیل نمی‌کند.

ثبت Doconut

AddDoconut() تنها نقطهٔ ورودی ثبت است — یک overload واحد دارد و سرویس Viewer، سرویس لایسنس و زیرساخت رندرینگ را به کانتینر DI متصل می‌کند.

دو فراخوانی میدلور تنظیم را کامل می‌کنند و ترتیب آن‌ها مهم است: UseDoconutResources() باید قبل از UseDoconut() اجرا شود. UseDoconut() میدلور نهایی است، بنابراین فراخوانی آن ابتدا باعث می‌شود هر درخواست به منبع /doconut-res هرگز به هندلر منابع نرسد و خطای ۴۰۴ دریافت شود. اتصال سشن نیز لازم است — امنیت پیش‌فرض سند 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();          // قبل از UseDoconut() باید UseSession() فراخوانی شود
app.UseDoconutResources(); // باید قبل از UseDoconut() ثبت شود
app.UseDoconut();

تمام گزینه‌ها

DoconutOptions ویژگی‌های قابل تنظیم زیر را می‌پذیرد. هر یک اختیاری است — مقادیر پیش‌فرض زیر زمانی اعمال می‌شوند که ویژگی‌ای تنظیم نشده باشد.

ویژگیپیش‌فرضتوضیح
ShowDoconutInfofalseزمانی که true باشد، درخواست بدون token بنر نسخه را به‌جای ۴۰۴ برمی‌گرداند. برای بررسی سریع مفید است؛ در محیط تولید غیرفعال کنید.
UnsafeModefalseزمانی که true باشد، بررسی امنیت سشن ASP.NET را در درخواست‌های صفحه نادیده می‌گیرد. در محیط تولید غیرفعال کنید.
MiddlewarePath"/doconut"مقدار هماهنگی برای نقطهٔ انتهایی صفحه‑تصویر. اعتبارسنجی می‌شود، اما به‌تنهایی شاخه‌ای را سوار نمی‌کند؛ آن را با نگاشت واقعی UseDoconut() و BasePath مشتری هم‌راستا نگه دارید.
ResourcesPath"/doconut-res"محل سرویس‌دهی منابع جاسازی‌شدهٔ JS/CSS/تصویر.
LicensePath"" (empty string)مسیر فایل لایسنس. خالی بودن به معنای عبور به منبع بعدی و سپس جستجوی خودکار است.
LicenseContent"" (empty string)محتوای خام لایسنس — از متغیر محیطی، مدیر رازها یا پایگاه داده.
LicenseStreamnullلایسنس به‌صورت جریان، یک‌بار در زمان استارتاپ خوانده می‌شود.
ResetLicensefalseپرچم سازگاری رزرو شده. سرویس‌های فعلی .NET 6 لایسنس را در زمان AddDoconut() می‌خوانند؛ پس از تعویض لایسنس برنامه را مجدداً راه‌اندازی کنید.

اولویت لایسنس هنگام تنظیم بیش از یک منبع: LicenseStream بر LicenseContent، LicenseContent بر LicensePath و LicensePath بر جستجوی خودکار ارجحیت دارد — برای جزئیات به License Setup مراجعه کنید.

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;
});

مراحل بعدی

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