Установка

Добавьте Doconut в ваш проект .NET Standard 2.1

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

Сначала проверьте фреймворк хоста

Библиотека нацелена на 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 и не является частью ID.

Номер версии определяет поколение

Это важнее, чем название пакета. Обе версии библиотеки .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.

Два вызова 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();

Пространства имён

Типы конфигурации больше не разбросаны по четырём пространствам имён. В этом релизе почти всё находится в корневом пространстве 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"" (пустая строка)Путь к файлу лицензии. Пустое значение означает переход к следующему источнику, затем авто‑поиск.
LicenseContent"" (пустая строка)Сырой текст лицензии — из переменной окружения, менеджера секретов или базы данных.
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;
});

Следующие шаги

Была ли эта страница полезной?