Встановлення

Додайте Doconut до вашого проєкту .NET Standard 2.1

Базовий переглядач Doconut для .NET Standard постачається в одному пакеті NuGet, який підключається до будь‑якого застосунку ASP.NET Core. Додаткові плагіни використовують окремі пакети. На цій сторінці встановлюється базовий пакет, перевіряється, чи може ваш хост його споживати, та реєструється проміжне ПЗ — мінімум, необхідний перед вашим першим рендерингом.

Спочатку перевірте фреймворк хоста

Бібліотека орієнтується на netstandard2.1. Це більш обмежений контракт, ніж попередня збірка netstandard2.0, і це перше, що треба перевірити:

ХостПідтримується
.NET Core 3.0 або новіший, включаючи .NET 5/6/7/8Так
.NET Framework (будь‑яка версія)Ні — netstandard2.1 не може бути використаний у .NET Framework

Якщо застосунок працює на .NET Framework, це не правильний пакет. Використайте Doconut.NETFramework замість нього; починаючи з 26.9.0 він вимагає .NET Framework 4.7.2. Додатки‑зразки, що постачаються з цим випуском, орієнтуються на net8.0.

Встановіть пакет

bash
dotnet add package Doconut.NETStandard

Команда без вказання версії встановлює останню стабільну версію. Щоб точно відтворити поточний випуск 26.8.0, передайте версію як окрему опцію:

bash
dotnet add package Doconut.NETStandard --version 26.8.0

Doconut.NETStandard — це ідентифікатор пакету. Суфікс .26.8.0 належить до завантаженого файлу Doconut.NETStandard.26.8.0.nupkg і не є частиною ідентифікатора.

Номер версії — це покоління

Це важливіше тут, ніж назва пакету. Обидва покоління бібліотеки .NET Standard публікуються під одним і тим же ідентифікатором пакету, і лише версія розрізняє їх:

ВерсіяЦільAPI
26.7.0 та нижчеnetstandard2.0попередня інтеграція
26.8.0 та вищеnetstandard2.1інтеграція, задокументована тут

Не існує сумісного shim і пакету, що працює паралельно. Підвищення версії є оновленням, і компілятор одразу повідомить про різниці в API.

Не обирайте документацію лише за назвою пакету:

  • new Viewer(_cache, _accessor, …), UnSafeMode, синхронний OpenDocument(...), viewer.InitCache(), UseDoconutWebFarm та вручну скопійовані скрипти переглядача ідентифікують попередню інтеграцію;
  • AddDoconut(), UseDoconutResources(), інжектований Viewer та OpenDocumentAsync(...) ідентифікують поточну інтеграцію, задокументовану тут.

Перекладений попередній посібник з налаштування залишається доступним. Скористайтеся посібником з міграції, щоб змінити покоління; оновлення пакету не перетворює автоматично старт, життєвий цикл переглядача чи ресурси браузера.

Зареєструйте Doconut

AddDoconut() — єдиний точка реєстрації; існує один перевантажений варіант, і він підключає сервіс Viewer, сервіс ліцензії та інфраструктуру рендерингу до контейнера DI.

Два виклики проміжного ПЗ завершують налаштування, і їх порядок важливий: UseDoconutResources() має виконуватись перед UseDoconut(). UseDoconut() — це термінальний проміжний ПЗ, тому його виклик спочатку призводить до того, що кожен запит до ресурсу /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();

Простори імен

Типи конфігурації більше не розподілені по чотирьох просторах імен. У цьому випуску майже все знаходиться у кореневому просторі імен Doconut:

csharp
using Doconut;                       // Viewer, DoconutOptions, DocOptions, всі конфігурації форматів
using Doconut.Middleware;            // AddDoconut, UseDoconut, UseDoconutResources
using Doconut.Clouds;                // конфігурації хмари та спільного доступу до файлів
using Doconut.Configs.Conversion;    // ConversionTarget

Самі назви типів не змінилися — PdfConfig, WordConfig, ExcelConfig, CssConfig, ScriptConfig та інші залишаються. Якщо ви переносите існуючий застосунок, більшості файлів потрібні лише два видалені рядки using; дивіться посібник з міграції.

Усі параметри

DoconutOptions приймає наступні налаштовувані властивості. Кожна з них є необов’язковою — нижче наведені значення за замовчуванням застосовуються, якщо властивість не вказана.

ВластивістьЗа замовчуваннямОпис
ShowDoconutInfofalseКоли true, запит без token повертає банер з версією замість 404. Корисно для швидкої перевірки; вимикайте у продакшн.
UnsafeModefalseКоли true, пропускає перевірку безпеки ASP.NET‑session при запитах сторінок. Вимикайте у продакшн. Зауважте написання — у попередній бібліотеці це називалося UnSafeMode.
MiddlewarePath"/doconut"Значення координації для кінцевої точки сторінка‑зображення. Перевіряється, але не створює гілку самостійно; тримайте його узгодженим з фактичним маршрутом UseDoconut() та BasePath клієнта.
ResourcesPath"/doconut-res"Шлях, звідки подаються вбудовані ресурси JS/CSS/зображення.
LicensePath"" (empty string)Шлях до файлу ліцензії. Порожнє означає переходити до наступного джерела, потім автоматичний пошук.
LicenseContent"" (empty string)Необроблений вміст ліцензії — з змінної середовища, менеджера секретів або бази даних.
LicenseStreamnullЛіцензія у вигляді потоку, читається один раз під час запуску.
ResetLicensefalseЗарезервований прапорець сумісності. Ліцензія читається під час 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;
});

Наступні кроки

Чи була ця сторінка корисною?