Lisans Kurulumu
Doconut'un lisans dosyanızı aradığı yer
Bir lisans olmadan, Doconut hâlâ belgeleri render eder — her sayfa sadece bir değerlendirme filigranı taşır. Bu sayfa, bir lisans sağlamanın dört yolunu ve birden fazla yol ayarlandığında tam önceliği açıklar.
Lisans sağlamak için dört yol
Dört yol vardır: DoconutOptions içinde üç açık kaynak — bir akış, ham içerik veya bir dosya yolu — ve hiçbiri ayarlanmamışsa otomatik keşif. Birden fazla kaynak ayarlandığında öncelik tam olarak şöyledir:
LicenseStream > LicenseContent > LicensePath > otomatik arama.
Yol ile
LicensePath, tam olarak verildiği gibi File.Exists'e geçirilir. Göreceli bir yol, işlemin şu anki çalışma dizinine göre çözülür — proje klasörünüze değil ve Program.cs dosyasının bulunduğu klasöre de değil. Yol çözülemezse, Doconut bir istisna atmaz ve otomatik aramaya geri dönmez — sadece lisans yüklemez ve görüntüleyici filigran ekler. Otomatik arama yalnızca LicensePath, LicenseContent veya LicenseStream'in hiçbiri ayarlanmamışsa çalışır.
Mutlak bir yol tercih edin (örneğin IWebHostEnvironment.WebRootPath veya AppContext.BaseDirectory'den oluşturulan), ya da LicensePath'i tamamen atlayıp aşağıdaki otomatik keşfe güvenin.
builder.Services.AddDoconut(options =>
{
options.LicensePath = Path.Combine(AppContext.BaseDirectory, "Doconut.Viewer.lic");
});Akış ile
LicenseStream, başlangıçta bir kez okunur — lisansın disk üzerindeki bir dosyadan değil gizli bir depodan gelmesi durumunda faydalıdır.
// Öncelik: LicenseStream > LicenseContent > LicensePath > otomatik arama.
builder.Services.AddDoconut(options =>
{
options.LicenseStream = licenseStream;
});İçerik ile
LicenseContent, lisans metnini doğrudan kabul eder — bir ortam değişkeni, bir veritabanı veya bir gizli yönetici aracılığıyla:
// Lisans XML'i bir veritabanından, ortam değişkeninden veya gizli yöneticiden —
// disk üzerinde dosya yok. Yalnızca LicenseStream tarafından geçilir.
builder.Services.AddDoconut(options =>
{
options.LicenseContent = Environment.GetEnvironmentVariable("DOCONUT_LICENSE") ?? "";
});Otomatik keşif
Üç açık kaynağın hiçbirini yapılandırmazsanız, Doconut kendisi lisansı arar:
// Hiçbir şey yapılandırılmadığında, Doconut kendisi lisansı arar:
// 1. {CurrentDirectory}/wwwroot
// 2. {CurrentDirectory}/wwwroot/lib
// 3. AppContext.BaseDirectory (derleme çıktısı klasörü)
// Doconut.Viewer.lic ve olası eklentiye özgü
// Doconut.Viewer.<Capability>.lic dosyalarını yanlarında arar.
builder.Services.AddDoconut();Sorgulama dizinleri sırasıyla ve her birinde aranan dosya adları:
1. {CurrentDirectory}/wwwroot
2. {CurrentDirectory}/wwwroot/lib
3. AppContext.BaseDirectory
Filenames (checked in each directory above, in order):
Doconut.Viewer.lic — base viewer license
Doconut.Viewer.<Capability>.lic — per-plugin license, alongside Doconut.Viewer.licLisansı çıkış klasörünüze kopyalayın
LicensePath ve otomatik aramanın AppContext.BaseDirectory sorgusu, .lic dosyasının derlenmiş uygulamanın yanına bulunmasını gerektirir — sadece kaynak wwwroot klasörünüzde değil. SDK'nın kendi test uygulaması, her derlemede bu MSBuild hedefiyle dosyayı kopyalar:
<Target Name="CopyLicensesToOutput" AfterTargets="Build">
<ItemGroup>
<DoconutLicenseFiles Include="$(MSBuildProjectDirectory)\wwwroot\*.lic" />
</ItemGroup>
<Copy SourceFiles="@(DoconutLicenseFiles)" DestinationFolder="$(OutDir)" SkipUnchangedFiles="true" />
</Target>
.licdosyalarını kaynak kontrolünden uzak tutun — uygulamanın yanına dağıtın, ya da lisansı gizli deponuzdanLicenseContentveyaLicenseStreamaracılığıyla enjekte edin.
Lisans olmadan ne olur
Eksik bir lisans istisna atmaz. AddDoconut() başarılı olur, uygulama başlar ve görüntüleyici çalışır — ancak her sayfa bir değerlendirme filigranı taşır ve hiçbir isteğe bağlı yetenek verilmez.
Bulunan ancak reddedilen bir lisans dosyası farklıdır. Geçersiz bir imza, müdahale, kara listeye alma veya lisansın sürüm penceresinin dışındaki bir derleme, OpenDocumentAsync'nin LicenseException atmasına ve License.RejectionMessage içermesine neden olur. Reddetme mesajı olmayan takvim süresi dolmuş bir lisans, filigranlı modda devam eder.
Eklentilerin yeteneklere ihtiyacı var
Uygun bir yetki olmadan bir eklenti kaydetmek farklıdır: eksik bir lisans, eski bir TRIAL dosyası veya o yeteneği içermeyen bir ücretli lisans için AddDoconut() InvalidOperationException fırlatır, bu yüzden uygulama başlatılamaz. Örneğin, Converter yetkisini veren bir lisans olmadan Converter eklentisini kaydetmek:
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.Mesaj, çözümü doğrudan söyler: ya o eklenti için options.AddPlugin<...>() çağrısını kaldırın, ya da yeteneği veren bir ücretli lisans veya aktif Geçici/Demo (NFR) lisansı kurun. Geçici kayıtların süresi dolduktan sonra da var olmalarına izin verilir, böylece önceden yapılandırılmış bir uygulama yeniden başlatma sırasında çökmek yerine çalışma zamanında işlevselliğini azaltabilir; süresi dolduğunda ise yetenekleri yine iptal edilir.
Yüklenen lisansı doğrulayın
IDoconutLicenseService'i kullanın, SDK tarafından kullanılan aynı gerçek kaynağı, kimliği doğrulanmış bir tanı uç noktası sunmak veya özellik bayraklarını yönetmek için. Lisans içeriğini veya anahtarlarını döndürmeyin.
app.MapGet("/api/doconut/license", (IDoconutLicenseService license) => Results.Ok(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
}));Lisans, AddDoconut() kaydı sırasında okunur. ResetLicense şu anda aktif bir yeniden yükleme yolu olmayan bir uyumluluk özelliğidir, bu yüzden bir lisans dosyasını değiştirmek uygulamayı yeniden başlatmayı gerektirir.
Sorun giderme matrisi
| Semptom | Muhtemel neden | Kontrol |
|---|---|---|
| Görüntüleyici çalışıyor ancak her sayfa filigranlı | Lisans yüklenmedi veya lisans takvim süresi dolmuş | IDoconutLicenseService'i çözün; çıktı dizinini ve işlem çalışma dizinini doğrulayın |
AddDoconut() bir eklenti için hata veriyor | Lisans o eklenti yeteneğini vermiyor | IsCapabilityGranted(...)'i kontrol edin ve satın almadığınız kayıtları kaldırın |
| Yapılandırılmış göreceli yol yerel ortamda çalışıyor ancak IIS/konteynerde çalışmıyor | İşlem çalışma dizini değişti | AppContext.BaseDirectory veya mutlak bir yol kullanın |
Değiştirilen .lic dosyası etkisiz | Tekil lisans servisi zaten oluşturulmuş | Uygulamayı yeniden başlatın |
OpenDocumentAsync LicenseException fırlatıyor | İmza, domain, sürüm penceresi, kara liste veya eklenti çalışma zamanı kapısı lisansı reddetti | İstisna/red mesajını güvenilmeyen istemcilere göstermeden okuyun |
Sonraki adımlar
- Lisanslama — yetenekler, lisans katmanları ve çalışma zamanında neyin yüklendiğini doğrulama.
- Sorun Giderme — filigranlar, reddedilen lisanslar ve yetenek hataları.
Bu sayfa yardımcı oldu mu?