DoconutOptions
Configure os serviços Doconut
DoconutOptions (namespace Doconut) é o objeto de configuração único para todo o SDK. Você o configura uma vez, dentro de AddDoconut(), e ele é registrado como singleton.
builder.Services.AddDoconut(options =>
{
options.LicensePath = "Doconut.Viewer.lic";
options.UnsafeMode = false;
options.ShowDoconutInfo = false;
options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});Propriedades
| Tipo | Propriedade | Padrão | Descrição |
|---|---|---|---|
bool | ShowDoconutInfo | false | Quando 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; mantenha false em produção. |
bool | UnsafeMode | false | Quando true, ignora a verificação de segurança da sessão ASP.NET nas solicitações de página. Mantenha false em produção (veja Conceitos Principais → Sessões & Segurança). |
string | MiddlewarePath | "/doconut" | Valor de coordenação para o endpoint de página‑imagem. É validado, mas não monta um ramo de pipeline; mantenha alinhado com o mapeamento real de UseDoconut() e o BasePath do cliente. |
string | ResourcesPath | "/doconut-res" | Prefixo de caminho URL para os recursos incorporados de JS/CSS/imagem/fonte. |
string | LicensePath | "" | Caminho para o arquivo de licença. Vazio → próxima fonte de licença, depois descoberta automática; nada encontrado → estado de avaliação com marca d'água e sem funcionalidades. |
string | LicenseContent | "" | Conteúdo XML bruto da licença (banco de dados, variável de ambiente, gerenciador de segredos). Tem precedência sobre LicensePath. |
Stream? | LicenseStream | null | Licença como stream, lida uma vez na inicialização. Tem precedência sobre ambas as outras fontes. |
bool | ResetLicense | false | Flag de compatibilidade reservada. A implementação atual do .NET 6 não a utiliza; reinicie a aplicação após substituir uma licença. |
DoconutPluginRegistry | PluginRegistry | — | Registro somente leitura que coleta contribuições de plugins; consumido pela fábrica de visualizadores. Popule via AddPlugin<T>(). |
Precedência de licença (aplicada no registro de serviços): LicenseStream → LicenseContent → LicensePath → descoberta automática (veja Introdução → Configuração de Licença).
Métodos
AddPlugin<TPlugin>()
DoconutOptions AddPlugin<TPlugin>() where TPlugin : IDoconutPlugin, new()Use este método para os pacotes Converter e DICOM lançados como opt‑in. 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 ficam sujeitos ao gate 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 são documentadas na página do Plugin Converter (Plugins → Converter Plugin).
RegisterViewer(extension, factory, defaultConfig?)
DoconutOptions RegisterViewer(
string extension, // ".myext" — leading dot optional
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 uma configuração explícita, um ImageConfig é usado.
Lança ArgumentException (Extension must be a non-empty file extension.) para uma extensão vazia e ArgumentNullException para uma fábrica nula.
Validação na inicialização
AddDoconut() valida as opções fail‑fast, de modo que uma má configuração aparece como uma exceção clara na inicialização em vez de 404s confusos no tempo de requisição:
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
// Production: explicit license, everything locked down (all security defaults)
builder.Services.AddDoconut(options =>
{
options.LicenseContent = builder.Configuration["Doconut:License"] ?? "";
});
// Custom paths (e.g. to avoid a route conflict)
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 do 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 defina o BasePath do cliente para a mesma URL.
Esta página foi útil?