Налаштування ліцензії
Де Doconut шукає ваш файл ліцензії під IIS
Без ліцензії Doconut все одно рендерить документи — кожна сторінка лише містить водяний знак оцінки. На цій сторінці розглянуто чотири способи надання ліцензії в Global.asax, де Doconut шукає її, якщо ви не вказали жодного, та що відбувається, коли ліцензія плагіна відсутня.
Чотири способи надання ліцензії
Існує три явних джерела в DoconutOptions — шлях до файлу, потік або сирий вміст — плюс автоматичне виявлення, коли жодне з них не встановлено. Усі вони читаються один раз у DoconutHost.Initialize. Коли встановлено більше одного, пріоритет чітко визначений:
LicenseStream перемагає LicenseContent перемагає LicensePath перемагає автоматичне виявлення.
За шляхом
Вкажіть LicensePath повний шлях. Відносний шлях розв'язується відносно поточного каталогу процесу, і під IIS це папка самого робочого процесу, а не ваш сайт. HostingEnvironment.MapPath перетворює шлях, відносний до сайту, у повний шлях:
Doconut.DoconutHost.Initialize(options =>
{
options.LicensePath = HostingEnvironment.MapPath("~/wwwroot/Doconut.Viewer.lic");
});Якщо файл не існує, Doconut не генерує виключення і не переходить до автоматичного виявлення: ліцензія не завантажується, і переглядач додає водяний знак. Файли ліцензій для кожного плагіна в тій же папці (Doconut.Viewer.<Capability>.lic) читаються разом з нею, тому LicensePath і AddPlugin<...>() працюють разом, коли ліцензії плагінів розташовані поруч із базовою ліцензією.
За потоком
LicenseStream читається один раз під час запуску — це корисно, коли ліцензія надходить з вбудованого ресурсу або сховища секретів, а не з файлу на диску.
// Precedence: LicenseStream > LicenseContent > LicensePath > auto-search.
Doconut.DoconutHost.Initialize(options =>
{
options.LicenseStream = licenseStream;
});За вмістом
LicenseContent приймає сам текст ліцензії — з змінної середовища, бази даних або сховища секретів — тому файл ліцензії не потрібно розгортати разом із сайтом.
// License XML from a database, an environment variable or a secret store -
// no file on disk. Beaten only by LicenseStream.
Doconut.DoconutHost.Initialize(options =>
{
options.LicenseContent = Environment.GetEnvironmentVariable("DOCONUT_LICENSE") ?? "";
});Автоматичне виявлення
Не встановлюйте жодне з трьох, і Doconut сам шукає ліцензію:
// Configure nothing, and Doconut searches for the license itself, in this order:
// 1. {CurrentDirectory}\wwwroot
// 2. {AppContext.BaseDirectory}\wwwroot (under IIS: the site's root folder)
// It looks for Doconut.lic first, then Doconut.Viewer.lic, plus any per-plugin
// Doconut.Viewer.<Capability>.lic files alongside it.
Doconut.DoconutHost.Initialize();Два каталоги у зазначеному порядку та файли, які шукаються:
1. {CurrentDirectory}\wwwroot
2. {AppContext.BaseDirectory}\wwwroot
In each folder:
Doconut.lic — if found, this is the only file read
Doconut.Viewer.lic — base viewer license
Doconut.Viewer.<Capability>.lic — per-plugin licenses, read only next to Doconut.Viewer.licПід IIS та IIS Express, AppContext.BaseDirectory — це коренева папка сайту — та, що містить Web.config, а не його папка bin. Тому ліцензія повинна знаходитися у wwwroot під коренем сайту:
MySite\
Web.config
Global.asax
bin\
wwwroot\
Doconut.Viewer.lic
Doconut.Viewer.Converter.licУ проєкті тримайте wwwroot\*.lic поруч із Web.config і розгорніть папку разом із сайтом. Жоден крок збірки не повинен копіювати її кудись. .lic у будь-якому іншому місці — у bin\, поруч із Web.config або у підпапці wwwroot — ніколи не читається.
Тримайте файли
.licпоза системою контролю версій. Розгорніть їх разом із сайтом або надайте ліцензію черезLicenseContentабоLicenseStreamз вашого сховища секретів.
Що відбувається без ліцензії
Відсутність ліцензії не викликає виключення. DoconutHost.Initialize успішно завершується, сайт запускається, і переглядач працює, проте кожна сторінка містить водяний знак оцінки і жодна додаткова можливість не надається.
Файл ліцензії, який знайдено, але відхилено, — це інша ситуація. Недійсний підпис, підробка або збірка поза межами версійного вікна ліцензії змушують OpenDocumentAsync викидати LicenseException з поясненням.
Плагінам потрібна їхня ліцензія під час запуску
Реєстрація плагіна, можливість якого не надається ліцензією, зупиняє застосунок під час запуску. DoconutHost.Initialize викидає виключення у Application_Start:
InvalidOperationException: The Converter plugin is registered via AddPlugin but no active
license grants Converter. Remove the AddPlugin<...>() call or install a license (or
trial/demo) that includes Converter.У System.Web ви не бачите це повідомлення у браузері. Кожен запит до сайту відповідає порожнім 500 — без сторінки помилки, без трасування стеку, нічого в журналі IIS. Виключення записується лише в журнал подій Windows (журнал застосунків, джерело ASP.NET). Якщо весь сайт перестає відповідати одразу після додавання рядка AddPlugin, перевірте файли ліцензій у wwwroot перед кодом: файл плагіна Doconut.Viewer.<Capability>.lic має бути поруч із Doconut.Viewer.lic, і без базової ліцензії файли плагіна взагалі не читаються.
Перевірка завантаженої ліцензії
IDoconutLicenseService — це той самий джерело істини, яке використовує SDK. Отримайте його з DoconutHost.Services, щоб надати автентифікований діагностичний кінцевий пункт або керувати функціональними прапорцями — ніколи не повертаючи вміст ліцензії:
// GET /License/Status
public ActionResult Status()
{
var license = Doconut.DoconutHost.Services.GetRequiredService<IDoconutLicenseService>();
return Json(new
{
viewer = license.IsViewerLicensed || license.IsTemporary,
temporary = license.IsTemporary,
search = license.IsCapabilityGranted(LicenseCapability.Search),
annotation = license.IsCapabilityGranted(LicenseCapability.Annotation),
converter = license.HasConverter,
dicom = license.HasDicom
}, JsonRequestBehavior.AllowGet);
}Ліцензія читається один раз у DoconutHost.Initialize. Після заміни файлу ліцензії перезапустіть пул застосунків (або змініть Web.config), щоб Application_Start запустився знову.
Усунення неполадок
| Симптом | Ймовірна причина | Перевірка |
|---|---|---|
| Переглядач працює, але кожна сторінка має водяний знак | Ліцензію не знайдено | Чи знаходиться .lic у <site root>\wwwroot? Викличте кінцеву точку статусу вище |
Кожен запит відповідає порожнім 500 одразу після додавання плагіна | Зареєстрований плагін не має ліцензії, що його дозволяє | Журнал подій Windows, джерело ASP.NET; .lic плагіна поруч з Doconut.Viewer.lic |
LicensePath працює на вашій машині, але не на сервері | Відносний шлях, розв'язаний відносно папки робочого процесу | Створіть його за допомогою HostingEnvironment.MapPath("~/wwwroot/...") |
Замінений файл .lic не має ефекту | Ліцензія була прочитана під час запуску застосунку | Перезапустіть пул застосунків |
OpenDocumentAsync викидає LicenseException | Ліцензію знайдено, але відхилено | Прочитайте повідомлення про виключення; не показуйте його недовіреним клієнтам |
Наступні кроки
- Ліцензування — можливості та як перевіряти їх під час виконання.
- Усунення неполадок — водяні знаки, помилки запуску та інші симптоми.
Чи була ця сторінка корисною?