Lisans Kurulumu

Doconut lisans dosyanızı nerede arar

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 ayarlandığında kesin önceliği açıklar.

Lisans bir kez, AddDoconut() sırasında yüklenir. Bu, önceki .NET Standard kitaplığından bir değişikliktir; o kitaplıkta lisans bir Viewer örneğine verilirdi ya da statik Viewer.DoconutLicense(...) / Viewer.SetLicensePlugin(...) çağrılarıyla ayarlanırdı. Bu yöntemler bu sürümde bir başlangıç mekanizması değildir — göç rehberi‑e bakın.

Lisans Sağlamanın Dört Yolu

DoconutOptions üzerinde üç açık kaynak — bir akış, ham içerik veya bir dosya yolu — ve hiçbiri ayarlanmamışsa otomatik keşif olmak üzere dört yol vardır. Birden fazla kaynak ayarlandığında öncelik tam olarak şöyledir:

LicenseStream, LicenseContent, LicensePath ve otomatik aramayı geçer.

Yol ile

LicensePath, File.Exists'e tam olarak verildiği gibi gönderilir. Göreceli bir yol, işlemin geçerli çalışma dizinine göre çözülür — projenizin klasörüne 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 ayarlı olmadığında çalışır. Aynı klasördeki eklentiye özgü lisans dosyaları (Doconut.Viewer.<Capability>.lic) bununla birlikte okunur, bu yüzden LicensePath ve AddPlugin<...>() temel lisansın yanında eklenti lisansları bulunduğunda birlikte çalışır.

Mutlak bir yol tercih edin (örneğin IWebHostEnvironment.WebRootPath veya AppContext.BaseDirectory kullanılarak 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, "wwwroot", "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 kullanışlı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, veritabanı veya gizli yönetici aracılığıyla:

csharp
// Lisans XML'i bir veritabanı, ortam değişkeni veya gizli yöneticiden —
// disk üzerinde dosya yok. Sadece 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ırma, ve Doconut sadece bu iki klasörde lisansı kendisi arar:
//   1. {CurrentDirectory}/wwwroot
//   2. {AppContext.BaseDirectory}/wwwroot   (derleme çıktısı klasöründeki wwwroot)
// Önce Doconut.lic, ardından Doconut.Viewer.lic ve ardından yetenek bazlı
// Doconut.Viewer.<Capability>.lic dosyalarını arar.
builder.Services.AddDoconut();

Sondaj klasörleri sırasıyla ve her birinde aranan dosya adları:

text
1. {CurrentDirectory}/wwwroot
2. {AppContext.BaseDirectory}/wwwroot

Dosya adları (her klasörde yukarıda kontrol edilen sırayla):
  Doconut.lic                          — temel görüntüleyici lisansı (ilk kontrol edilen)
  Doconut.Viewer.lic                   — temel görüntüleyici lisansı
  Doconut.Viewer.<Capability>.lic      — yeteneğe özgü lisans, temel lisansın yanında

wwwroot klasörünün dışındaki hiçbir şey okunmaz: çıktı klasöründeki bir .lic dosyası ya da wwwroot/lib içindeki bir .lic dosyası yok sayılır.

Daha önce Viewer yapıcısına lisans yollarının bir List<string>'ini — yetenek başına bir tane — geçirdiyseniz, bu yardımcı dosyaları Doconut.Viewer.lic dosyasının yanına koyun ve otomatik keşfin onları almasını sağlayın. DoconutOptions üzerinde yol listesi seçeneği yoktur.

Lisansı çıkış klasörünüze kopyalayın

İşlem proje klasöründen çalışmadığında — yayınlanmış bir uygulama, IIS, bir konteyner, bir test çalıştırıcısı — ilk arama başarısız olur ve ikinci arama, {AppContext.BaseDirectory}/wwwroot, dosyayı bulmak zorundadır. SDK'nın kendi test uygulaması, her derlemede bu MSBuild hedefiyle lisansları oraya kopyalar:

xml
<Target Name="CopyLicensesToOutput" AfterTargets="Build">
  <ItemGroup>
    <DoconutLicenseFiles Include="$(MSBuildProjectDirectory)\wwwroot\*.lic" />
    <StaleOutputLicenses Include="$(OutDir)wwwroot\*.lic" />
  </ItemGroup>
  <!-- İlk olarak sil, böylece wwwroot içindeki .lic dosyasının yeniden adlandırılması veya kaldırılması da çıktıda yok edilir. -->
  <Delete Files="@(StaleOutputLicenses)" />
  <Copy SourceFiles="@(DoconutLicenseFiles)" DestinationFolder="$(OutDir)wwwroot" />
</Target>

Hedef $(OutDir)wwwroot olmalıdır: çıkış köküne kopyalanan bir .lic otomatik arama tarafından asla bulunmaz. Bu sayfadaki LicensePath örnekleri aynı konuma işaret eder.

.lic dosyalarını kaynak kontrolünden uzak tutun — uygulamanın yanına dağıtın veya lisansı gizli depodan LicenseContent veya LicenseStream aracılığıyla enjekte edin.

Lisans olmadan ne olur

Eksik bir lisans hata vermez. 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 alınma veya lisansın sürüm penceresi dışındaki bir derleme, OpenDocumentAsync'in LicenseException fırlatmasına ve License.RejectionMessage içermesine neden olur. Reddetme mesajı olmayan takvim süresi dolmuş bir lisans, filigranlı modda devam eder.

Eklentiler yeteneklere ihtiyaç duyar

İlgili 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 yetkisi 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, düzeltmeyi 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 yeteneklerini kaybeder; süresi dolduğunda ise yetenekleri hâlâ iptal edilir.

Yüklenen lisansı doğrulayın

IDoconutLicenseService'i, SDK tarafından kullanılan aynı doğruluk kaynağını, kimliği doğrulanmış bir tanı uç noktası sunmak veya özellik bayraklarını yönetmek için kullanın. Lisans içeriklerini 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; çıkış 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ış bir göreli yol yerel olarak ç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 hizmeti 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/reddetme mesajını güvensiz istemcilere göstermeden okuyun
Yeteneğe özgü bir lisans önceden çalışıyordu ancak artık çalışmıyorEski kod, Viewer yapıcısına açık lisans yolları gönderiyorduEşlik eden .lic dosyalarını Doconut.Viewer.lic yanına taşıyın ve otomatik keşfin onları yüklemesine izin verin

Sonraki adımlar

  • Lisanslama — özellikler, lisans katmanları ve çalışma zamanında nelerin yüklendiğinin doğrulanması.
  • Sorun Giderme — filigranlar, reddedilen lisanslar ve özellik hataları.

Bu sayfa yardımcı oldu mu?