Pengaturan Lisensi
Di mana Doconut mencari file lisensi Anda di bawah IIS
Tanpa lisensi, Doconut tetap merender dokumen — setiap halaman hanya menampilkan watermark evaluasi. Halaman ini menjelaskan empat cara menyediakan lisensi di Global.asax, tempat Doconut mencari ketika Anda tidak menyediakan apa pun, dan apa yang terjadi ketika lisensi plugin tidak ada.
Empat cara menyediakan lisensi
Ada tiga sumber eksplisit pada DoconutOptions — jalur file, stream, atau konten mentah — serta penemuan otomatis ketika tidak ada yang diatur. Semua dibaca sekali, di DoconutHost.Initialize. Ketika lebih dari satu diatur, urutan prioritasnya tepat:
LicenseStream mengalahkan LicenseContent mengalahkan LicensePath mengalahkan penemuan otomatis.
Dengan path
Berikan LicensePath sebuah path lengkap. Path relatif diselesaikan terhadap direktori kerja proses saat ini, dan di bawah IIS itu adalah folder proses pekerja itu sendiri, bukan situs Anda. HostingEnvironment.MapPath mengubah path relatif situs menjadi path lengkap:
Doconut.DoconutHost.Initialize(options =>
{
options.LicensePath = HostingEnvironment.MapPath("~/wwwroot/Doconut.Viewer.lic");
});Jika file tidak ada, Doconut tidak melempar pengecualian dan tidak kembali ke penemuan otomatis: tidak ada lisensi yang dimuat, dan penampil menampilkan watermark. File lisensi per-plugin di folder yang sama (Doconut.Viewer.<Capability>.lic) dibaca bersamanya, sehingga LicensePath dan AddPlugin<...>() bekerja bersama ketika lisensi plugin berada di samping lisensi dasar.
Dengan stream
LicenseStream dibaca sekali, saat startup — berguna ketika lisensi berasal dari sumber daya tersemat atau penyimpanan rahasia daripada file di disk.
// Precedence: LicenseStream > LicenseContent > LicensePath > auto-search.
Doconut.DoconutHost.Initialize(options =>
{
options.LicenseStream = licenseStream;
});Dengan konten
LicenseContent mengambil teks lisensi itu sendiri — dari variabel lingkungan, basis data, atau penyimpanan rahasia — sehingga tidak perlu menyebarkan file lisensi bersama situs.
// 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") ?? "";
});Penemuan otomatis
Jangan atur salah satu dari tiga, dan Doconut mencari lisensi sendiri:
// 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();Dua folder, dalam urutan, dan file yang dicari:
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.licDi bawah IIS dan IIS Express, AppContext.BaseDirectory adalah folder root situs — folder yang berisi Web.config — bukan folder bin-nya. Jadi lisensi harus berada di wwwroot di bawah root situs:
MySite\
Web.config
Global.asax
bin\
wwwroot\
Doconut.Viewer.lic
Doconut.Viewer.Converter.licDalam proyek, letakkan wwwroot\*.lic di samping Web.config dan sebarkan folder bersama situs. Tidak ada langkah build yang harus menyalinnya ke mana pun. .lic di tempat lain — di bin\, di samping Web.config, atau di subfolder wwwroot — tidak pernah dibaca.
Simpan file
.licdi luar kontrol sumber. Sebarkan bersama situs, atau sediakan lisensi melaluiLicenseContentatauLicenseStreamdari penyimpanan rahasia Anda.
Apa yang terjadi tanpa lisensi
Lisensi yang hilang tidak menyebabkan pengecualian. DoconutHost.Initialize berhasil, situs mulai, dan penampil berjalan, tetapi setiap halaman menampilkan watermark evaluasi dan tidak ada kemampuan opsional yang diberikan.
File lisensi yang ditemukan tetapi ditolak berbeda. Tanda tangan tidak valid, manipulasi, atau build di luar jendela versi lisensi membuat OpenDocumentAsync melempar LicenseException dengan alasan.
Plugin memerlukan lisensinya saat startup
Mendaftarkan plugin yang kemampuannya tidak diberikan lisensi menghentikan aplikasi saat startup. DoconutHost.Initialize melempar di 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.Di bawah System.Web, Anda tidak melihat pesan itu di peramban. Setiap permintaan ke situs menjawab 500 kosong — tidak ada halaman error, tidak ada jejak stack, tidak ada apa pun di log IIS. Pengecualian hanya dicatat di log peristiwa Windows (log Aplikasi, sumber ASP.NET). Jika seluruh situs berhenti merespons tepat setelah Anda menambahkan baris AddPlugin, periksa file lisensi di wwwroot sebelum kode: Doconut.Viewer.<Capability>.lic plugin harus berada di samping Doconut.Viewer.lic, dan tanpa lisensi dasar file plugin tidak dibaca sama sekali.
Verifikasi lisensi yang dimuat
IDoconutLicenseService adalah sumber kebenaran yang sama yang digunakan SDK. Dapatkan dari DoconutHost.Services untuk mengekspos endpoint diagnostik terautentikasi atau mengendalikan flag fitur — jangan pernah mengembalikan konten lisensi:
// 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);
}Lisensi dibaca sekali, di DoconutHost.Initialize. Setelah mengganti file lisensi, daur ulang application pool (atau sentuh Web.config) sehingga Application_Start dijalankan kembali.
Pemecahan Masalah
| Gejala | Penyebab kemungkinan | Periksa |
|---|---|---|
| Penampil berfungsi tetapi setiap halaman berwatermark | Tidak ada lisensi yang ditemukan | Apakah .lic berada di <site root>\wwwroot? Panggil endpoint status di atas |
Setiap permintaan menjawab 500 kosong tepat setelah menambahkan plugin | Plugin yang terdaftar tidak memiliki lisensi yang memberikannya | Log peristiwa Windows, sumber ASP.NET; .lic plugin berada di samping Doconut.Viewer.lic |
LicensePath berfungsi di mesin Anda tetapi tidak di server | Path relatif yang diselesaikan terhadap folder proses pekerja | Bangun dengan HostingEnvironment.MapPath("~/wwwroot/...") |
File .lic yang diganti tidak berpengaruh | Lisensi dibaca saat aplikasi dimulai | Daur ulang application pool |
OpenDocumentAsync melempar LicenseException | Lisensi ditemukan tetapi ditolak | Baca pesan pengecualian; jangan tunjukkan ke klien yang tidak terpercaya |
Langkah Selanjutnya
- Lisensi — kemampuan, dan cara memeriksanya saat waktu jalan.
- Pemecahan Masalah — watermark, kegagalan startup, dan gejala lainnya.
Apakah halaman ini membantu?