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.

csharp
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.

csharp
// Ö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:

csharp
// 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:

csharp
// 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ı:

text
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.lic

Lisansı çı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:

xml
<Target Name="CopyLicensesToOutput" AfterTargets="Build">
  <ItemGroup>
    <DoconutLicenseFiles Include="$(MSBuildProjectDirectory)\wwwroot\*.lic" />
  </ItemGroup>
  <Copy SourceFiles="@(DoconutLicenseFiles)" DestinationFolder="$(OutDir)" SkipUnchangedFiles="true" />
</Target>

.lic dosyalarını kaynak kontrolünden uzak tutun — uygulamanın yanına dağıtın, ya da lisansı gizli deponuzdan LicenseContent veya LicenseStream aracı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:

text
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.

csharp
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

SemptomMuhtemel nedenKontrol
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 veriyorLisans o eklenti yeteneğini vermiyorIsCapabilityGranted(...)'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ştiAppContext.BaseDirectory veya mutlak bir yol kullanın
Değiştirilen .lic dosyası etkisizTekil 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?