Razor Pages, MVC och minimal-API:er
Visaren är inte bunden till någon hosting‑stil. Rendera monterings‑diven från en Razor‑vy eller en statisk sida och öppna dokumentet från en controller‑action, en sidhanterare eller en mappad endpoint.
Doconut registreras på samma sätt som allt annat i ASP.NET Core: en tjänst i containern och middleware i pipelinen. Den ärver din autentisering, din loggning, ditt DI‑graf och din distributionshistorik, eftersom den körs inuti dem snarare än bredvid dem.
Problemet
De flesta dokumentvisare levereras som en separat tjänst. Det innebär en andra distributionsenhet, ett andra set med autentiseringsuppgifter, ett nätverkshopp som dina dokument nu måste färdas över, och en annan sak att väcka någon om klockan två på morgonen.
Doconut är ett bibliotek. AddDoconut() lägger till det i din tjänstekollektion; UseDoconut() lägger till det i din pipeline. Det körs under din processidentitet, ser din konfiguration, skriver till din logger och distribueras av det som redan distribuerar din applikation.
Den praktiska konsekvensen är att auktorisationen förblir där den hör hemma. Du anropar OpenDocumentAsync() efter din egen behörighetskontroll, och visaren kan bara rendera det du har valt att ge den.
Funktioner
Visaren är inte bunden till någon hosting‑stil. Rendera monterings‑diven från en Razor‑vy eller en statisk sida och öppna dokumentet från en controller‑action, en sidhanterare eller en mappad endpoint.
Eftersom endpointarna lever i din pipeline fungerar [Authorize] som alltid. Det finns inget andra identitetssystem att federera med.
Dokumentsäkerhet bygger på ASP.NET‑sessionsstate, vilket är anledningen till att UseSession() måste registreras före UseDoconut(). Det betyder att visarens uppfattning om vem du är är densamma som applikationens.
Flera noder bakom en lastbalanserare delar renderingscachen, så en session som öppnas på en nod fortsätter fungera när nästa begäran hamnar någon annanstans.
IIS, Kestrel eller en container‑image du bygger själv. Inget i integrationen förändras mellan dem förutom var licensfilen monteras.
Med Converter‑pluginet körs DocumentConverter.ConvertAsync() i samma process — ingen andra tjänst, ingen tillfällig uppladdning, ingen rundresa.
Integration
UserMayRead och ResolvePath är din egen kod. Det är poängen: Doconut får aldrig reda på vilka dokument som finns eller vem som får se dem.
Stödda plattformar
// Program.cs
builder.Services.AddDoconut(options =>
{
options.LicensePath = "Doconut.Viewer.lic";
});
builder.Services.AddSession(); // document security rides on session state
var app = builder.Build();
app.UseSession(); // call UseSession() before UseDoconut()
app.UseDoconutResources(); // must be registered before UseDoconut()
app.UseDoconut();
// Open the document server-side, behind your own authorization
app.MapPost("/api/open", async (Viewer viewer, HttpContext ctx, string documentId) =>
{
if (!await ctx.UserMayRead(documentId))
return Results.Forbid();
// The token is opaque — hand it to the widget, never log or persist it.
string token = await viewer.OpenDocumentAsync(ResolvePath(documentId));
return Results.Ok(new { token });
}).RequireAuthorization();Detaljer
Ja. Båda stöds och använder samma DI‑plus‑middleware‑arkitektur. Det finns dedikerade sidor för var och en om du behöver versionsspecifik information.
Nej, och det är avsiktligt. Integration är alltid middleware plus JavaScript‑widgeten, vilket håller samma integration giltig över Razor Pages, MVC, Web Forms och Blazor istället för att fragmenteras i fyra.
Webbfarm och distribuerad distribution stödjs via en gemensam renderingscache. Ett dokument som öppnas på en nod förblir läsbart när efterföljande begäran hamnar på en annan.
Nej. Rendering är inbyggd — det finns ingen Office‑interop, ingen headless Word och ingen COM‑automation att sköta.
Blazor
Server‑side rendering med en widget som monteras rent in i Blazors interop‑livscykel — både Server och WebAssembly stöds.
BlazorWord
Inbyggd DOC/DOCX/RTF/ODT-rendering utan Office-installation, ingen COM-interoperabilitet och ingen serverautomatisering.
WordEn tillfällig licens tar några minuter att begära och körs helt på din egen maskin. De filer som är viktiga är de som redan stör din nuvarande visare.