Migration
Uppgradera till Doconut på .NET 8
Två migreringar finns på den här sidan: uppgradering av paketversionen inom .NET 8, och flytt av en integration från ett äldre Doconut-ramverk (.NET 6, .NET Standard 2.0, .NET Framework 4.7) till .NET 8 API:et.
Uppgradera paketversionen
- Uppdatera paketet (och eventuella pluginpaket — håll versionerna synkroniserade):
dotnet add package Doconut.NET8
dotnet add package Doconut.NET8.Dicom-
Kontrollera licensfönstret. En licens täcker ett versionsintervall. Om den nya versionen ligger utanför, blockeras öppning —
OpenDocumentAsynckastarLicenseException(fail-fast); den återgår inte till ett vattenmärke, ochIsVersionValidblirfalse. Förnya, ersätt.lic-filen och starta om applikationen så attAddDoconut()laddar den nya licensen. -
Bygg om och låt NuGet återställa de deklarerade beroendeversionerna — åter-pinna inte
System.Text.JsonellerSystem.Drawing.Common(se Felsökning för de exakta fel som en nedgradering orsakar). -
Utför ett snabbt test med ett dokument per formatfamilj du använder.
Migrera från .NET 6 / .NET Standard 2.0
.NET 8 API:et är en omdesign kring DI och asynkronitet. Mappningen:
| Aspekt | .NET 6 / Standard 2.0 | .NET 8 |
|---|---|---|
| Inställning | Construct Viewer(cache, httpContextAccessor, licensePath) | builder.Services.AddDoconut(options => …) + inject Viewer |
| Licens | Static Viewer.DoconutLicense(path) + SetLicensePlugin(...) per plugin | options.LicensePath / LicenseContent / LicenseStream — one license, auto-discovery for plugin files |
| Öppna | viewer.OpenDocument(...) (synchronous) | await viewer.OpenDocumentAsync(...) |
| Stäng | viewer.CloseDocument() or viewer.Dispose() | viewer.CloseDocument(token) — Viewer is not IDisposable |
| Livstid | Viewer implements IDisposable, holds the open document | Viewer is stateless; sessions live in the cache under tokens |
| Konverterare | viewer.Converter property | Converter‑pluginet (AddPlugin<ConverterPlugin>()) + DocumentConverter‑tjänsten |
| Konfigurationsklasser | Doconut.Configs.View.* namespaces | Allt i Doconut‑namnutrymmet |
| Mellanprogramvara | Manual handler wiring | app.UseDoconutResources() + app.UseDoconut() |
Ett typiskt före/efter:
// .NET 6 (gammalt API, visas för jämförelse — giltigt inte på .NET 8)
using var viewer = new Viewer(cache, httpContextAccessor, "wwwroot/Doconut.Viewer.lic");
var token = viewer.OpenDocument(path, new PdfConfig { AllowSearch = true }, new DocOptions());// .NET 8 — Viewer injicerad, licens konfigurerad en gång i AddDoconut()
var token = await viewer.OpenDocumentAsync(path, new PdfConfig { AllowSearch = true });Migrera från .NET Framework 4.7 (Web Forms)
4.7‑versionens Viewer är en WebControl; .NET 8 ersätter kontrollmodellen med middleware + en DI‑tjänst:
<doconut:DocViewer runat=server>‑kontrollen försvinner — sidan hostar widget‑div‑paret och ditt endpoint returnerar token (Quick Start visar mönstret).- Statiska licensmetoder →
DoconutOptionslicenskällor. - Synkron
OpenDocument→await OpenDocumentAsync. Viewer.ReferenceScripts()/ReferenceCss()finns i båda världarna — .NET 8‑versionerna tarScriptConfig/CssConfig‑objekt och är licensstyrda.- Kontrollegenskaper (
ShowThumbs,PageZoom,FixedZoom, …) → samma namn påViewerConfig/docViewer‑JS‑alternativen. - Exportmetoder som returnerar
byte[]→ de asynkrona annoterings‑export‑API:erna påViewer.
Planera detta som en omskrivning av värdslagret kring ett oförändrat koncept: öppna → token → widget.
Namnnotering
I alla ramverk är klassen Viewer — om du hittar DocumentViewer i gamla kodsnuttar eller tredjepartsartiklar, har den typen aldrig funnits i SDK:et.
Migrationschecklista
- Byt paket; synkronisera pluginpaketens versioner.
- Flytta licensinställningarna till
AddDoconut(); ta bort statiska licensanrop. - Gör öppningsanrop asynkrona; ersätt
Dispose/parameterlösCloseDocumentmedCloseDocument(token). - Ersätt
viewer.Converter‑användningar med registrering av Converter‑pluginet +DocumentConverter. - Testa säkerhetsvägen igen:
AddSession()/UseSession()krävs nu med standard säkerhet (plusAddDistributedMemoryCache()i en minimal‑API‑app).
Var den här sidan hjälpsam?