DoconutOptions
Configure os serviços Doconut
DoconutOptions (namespace Doconut) é o único objeto de configuração para todo o SDK. Você o configura uma única vez, dentro de AddDoconut(), e ele é registrado como um 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 Básicos → Sessions & Security). |
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, então descoberta automática; nada encontrado → estado de avaliação com marca d'água e sem recursos. |
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 8 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 Getting Started → License Setup).
Métodos
AddPlugin()
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). Fluente — 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 Básicos → Plugin System).
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(extensão, fábrica, configPadrão?)
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 restritos por licença. Quando defaultConfig é omitido e um documento é aberto 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 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:
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";
});Ao alterar ResourcesPath, mantenha o ResPath do widget cliente sincronizado (veja ViewerConfig).
MiddlewarePath não é um mapeador automático de rotas do ASP.NET Core. Se o 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?