DoconutOptions

Configure os serviços Doconut

DoconutOptions (namespace Doconut) é o único objeto de configuração para todo o SDK. Você o configura uma vez, dentro de AddDoconut(), e ele é registrado como um singleton.

csharp
builder.Services.AddDoconut(options =>
{
    options.LicensePath     = "Doconut.Viewer.lic";
    options.UnsafeMode      = false;
    options.ShowDoconutInfo = false;
    options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});

Propriedades

TipoPropriedadePadrãoDescrição
boolShowDoconutInfofalseQuando true, uma requisição de middleware sem token retorna um banner de versão (Doconut <version> is running on <host>) em vez de 404. Útil como verificação rápida; deixe false em produção.
boolUnsafeModefalseQuando true, pula a verificação de segurança da sessão ASP.NET nas requisições de página. Deixe false em produção (veja Conceitos Principais → Sessões & Segurança).
stringMiddlewarePath"/doconut"Valor de coordenação para o endpoint page-image. É validado, mas não monta um ramo de pipeline; mantenha alinhado com o mapeamento real de UseDoconut() e o cliente BasePath.
stringResourcesPath"/doconut-res"Prefixo de caminho URL para os recursos incorporados JS/CSS/imagem/fonte.
stringLicensePath""Caminho para o arquivo de licença. Vazio → próxima fonte de licença, então descoberta automática; nada encontrado → estado de avaliação com marca d'água sem recursos.
stringLicenseContent""Conteúdo bruto de licença XML (banco de dados, variável de ambiente, gerenciador de segredos). Tem precedência sobre LicensePath.
Stream?LicenseStreamnullLicença como fluxo, lida uma vez na inicialização. Tem precedência sobre ambas as outras fontes.
boolResetLicensefalseFlag de compatibilidade reservada. A implementação atual do .NET 8 não a consome; reinicie a aplicação após substituir uma licença.
DoconutPluginRegistryPluginRegistry—Registro somente leitura que coleta contribuições de plugins; consumido pela fábrica de visualizadores. Preencha via AddPlugin<T>().

Precedência de licença (aplicada no registro de serviço): LicenseStream → LicenseContent → LicensePath → descoberta automática (veja Começando → Configuração de Licença).

Métodos

AddPlugin<TPlugin>()

text
DoconutOptions AddPlugin<TPlugin>() where TPlugin : IDoconutPlugin, new()

Use este método para os pacotes Converter e DICOM opt-in lançados. Anotação e Busca normal são recursos licenciados incorporados e não utilizam AddPlugin<TPlugin>().

Registra um plugin de primeira parte (Converter, DICOM). Fluent — retorna a instância de opções. AddDoconut() lança InvalidOperationException para licença ausente, arquivo legado TRIAL, ou licença paga que não concede a capacidade do plugin. Registros Temporários/Demo são mantidos após a expiração e tornam-se sujeitos ao portão de tempo de execução (veja Conceitos Principais → Sistema de Plugins).

O widget Converter opt-in é habilitado com AddConverterWidget() e exposto através da propriedade somente leitura ConverterWidget; suas opções estão documentadas na página do Plugin Converter (Plugins → Plugin Converter).

RegisterViewer(extension, factory, defaultConfig?)

text
DoconutOptions RegisterViewer(
    string extension,                    // ".myext" — ponto inicial opcional
    Func<IFormatViewer> factory,
    Func<BaseConfig>? defaultConfig = null)

Registra um visualizador personalizado para uma extensão de arquivo. Visualizadores personalizados têm precedência sobre visualizadores incorporados e de plugins e não são limitados por licença. Quando defaultConfig é omitido e um documento abre sem configuração explícita, um ImageConfig é usado.

Lança ArgumentException (Extension must be a non-empty file extension.) para extensão vazia e ArgumentNullException para fábrica nula.

Validação de Inicialização

AddDoconut() valida as opções falha rápida, de modo que uma má configuração aparece como uma exceção clara na inicialização ao invés de 404s confusos no tempo de requisição:

text
DoconutOptions.MiddlewarePath must be a non-empty path starting with '/'.
DoconutOptions.ResourcesPath must be a non-empty path starting with '/'.
DoconutOptions.MiddlewarePath and ResourcesPath must be different paths.

Configurações Comuns

csharp
// Produção: licença explícita, tudo bloqueado (todos os padrões de segurança)
builder.Services.AddDoconut(options =>
{
    options.LicenseContent = builder.Configuration["Doconut:License"] ?? "";
});

// Caminhos personalizados (por exemplo, para evitar um conflito de rota)
builder.Services.AddDoconut(options =>
{
    options.MiddlewarePath = "/docs-engine";
    options.ResourcesPath  = "/docs-assets";
});

Quando você altera ResourcesPath, mantenha o ResPath do widget cliente sincronizado (veja ViewerConfig).

MiddlewarePath não é um mapeador automático de rotas ASP.NET Core. Se Doconut deve responder apenas abaixo de um prefixo personalizado, monte UseDoconut() nesse ramo (por exemplo com app.Map("/docs-engine", branch => branch.UseDoconut())) e configure o cliente BasePath para a mesma URL.

Esta página foi útil?