Administrador do Site

O PowerPortalsPro vem uma página de Administrador de Site que permite que um administrador apoiado pelo SystemUser limpe caches do lado do servidor sem reiniciar o host. O framework fornece a API de limpeza de cache (IPowerPortalsProService.ClearAllCachesAsync / ClearCacheAsync); seu portal fornece a própria página, o portal de papel e o link de navegação.

Ligando a fiação

Três coisas para fiar: o transformador de reivindicação de papel, a própria página e uma entrada de navegação. Os templates de portal (powerportalspro-csharp com as Autoopções , WebAssembly, ou Server de interatividade) trazem os três itens de catálogo — os trechos abaixo espelham o que os templates emitem, então você pode levantá-los em um portal que não foi gerado a partir de um template.

1. Configurar quais funções do Dataverse concedem administrador

SystemAdminClaimsTransformer carimba uma reivindicação de papel sintético SystemAdmin em qualquer principal que System Administrator detenha o papel Dataverse embutido ou um papel personalizado configurado via PortalIdentityOptions.SystemAdminRoleName. O papel embutido é sempre tratado como administrador; O papel configurado é opcional e se sobrepõe. A autorização de UI ([Authorize(Roles = "SystemAdmin")] e <AuthorizeView Roles="SystemAdmin">) verifica a reivindicação sintética, então uma função personalizada do Dataverse pode receber acesso de administrador sem precisar tocar em código naval.

2. Adicionar a página de Administrador do Site

O [Authorize(Roles = "SystemAdmin")] atributo é respeitado por AuthorizeRouteView; o interno <AuthorizeView Roles="SystemAdmin"> é defesa em profundidade caso um host troque o roteador. A página inteira (com o botão Limpar Tudo, a lista por cache com descrições localizadas e o feedback do toast) está nos templates SiteAdmin.razor.

3. Aflore na nave

Envolva o grupo de navegação de administradores para <AuthorizeView Roles="SystemAdmin"> que não administradores não vejam um link que não possam seguir. O link target é a rota em que a página se registra.

O que fica em cache

O framework registra nove caches como IClearableCache; a página de Administrador do Site os ordena alfabeticamente com suas descrições localizadas ao lado de cada um. As descrições estão no framework ppp-server.defaults.en.json sob app.cache-descriptions.

  • TableMetadata — Metadados por tabela (colunas, tipos, opções de escolha, relacionamentos). Atualize após mudanças no esquema.
  • ViewMetadata — Visualizações em cache do Dataverse (FetchXML, colunas, ordenação). Atualize após editar uma visualização no Dataverse.
  • EntityMetadata — Metadados brutos da entidade Dataverse usados por código de framework de nível inferior. Mesma fonte que o TableMetadata, mas em formato diferente — normalmente resetado juntos.
  • StringLocalizer — Todas as strings localizadas — etiquetas de tabelas/colunas do Dataverse, recursos web e arquivos JSON de pastas. Atualize após editar qualquer fonte de localização.
  • UserPrivileges — Privilégios de segurança resolvidos por usuário (quais funções concedem quais permissões). Atualize após alterar as atribuições de funções de um usuário.
  • TablePermissions — Permissões CRUD por usuário, por tabela resolvidas através da cadeia de manipuladores de permissões de tabela. Principalmente derivado do UserPrivileges for SystemUsers.
  • PrivilegeMetadata — Definições de privilégios em toda a organização a partir da tabela de privilégios do Dataverse. Quase nunca muda — apenas atualizações da plataforma Dataverse introduzem novas entradas.
  • OrganizationFileSettings — Configurações de upload de arquivos em nível de organização (tamanho máximo, extensões permitidas). Atualize após alterar esses no Dataverse.
  • Currency — Snapshot de transação de transação em toda a organização mais a moeda base da organização. Atualize após os administradores adicionarem ou atualizarem moedas no Dataverse.
  • EmailSender — Registro do remetente resolvido para e-mails de saída (busca do endereço do remetente configurado para sua referência de entidade Dataverse).

A reconstrução do StringLocalizer é a mais lenta

Limpar o cache do StringLocalizer percorre os metadados de cada tabela Dataverse + todo recurso web + cada arquivo de pastas e reconstrói o dicionário em memória. Espere 20–30 segundos contra um ambiente real. A reconstrução atômica garante que os leitores continuem vendo os valores anteriores durante toda a reconstrução — não há período em que o cache esteja vazio.

Adicionando seu próprio cache

Implemente IClearableCache e registre tanto como seu serviço de concreto quanto como IClearableCache. A página de Administrador do Site o identifica automaticamente e o renderiza alfabeticamente junto com o restante. A Name propriedade é o identificador público — é o que aparece no botão por cache.

Descrição localizada

A página de Administrador do Site procura app.cache-descriptions.<Name> no localizador para renderizar o texto da descrição ao lado do botão. Adicione uma entrada nesse namespace no seu portal app.en.json (e em qualquer outro arquivo de idioma); páginas sem uma descrição registrada renderizam graciosamente apenas o botão.

Limpar Tudo vs. por cache

O Clear All executa todos os caches ClearAsync registrados em paralelo e reporta resultados por cache (sucesso / falha / ms decorridos) na resposta. Os botões por cache disparam do mesmo ClearAsync jeito para apenas um cache — útil quando você só precisa eliminar um (por exemplo, após editar uma única visualização do Dataverse).

Referência de API

A API de limpeza de cache permanece em IPowerPortalsProService; a orquestração subjacente que executa ClearAsync cada cache em paralelo permanece em ICacheManager. As interfaces estão resumidas abaixo.

IClearableCache Interface

Propriedades

Nome
Tipo
Padrão
Descrição
Namestring
Um nome curto e estável para telemetria / feedback da interface (por exemplo, 'TableMetadata'). Não precisa ser amigável para humanos — é um identificador de máquina, a interface de administrador pode mapear para um rótulo localizado.
Nome: Name
Tipo: string
Descrição: Um nome curto e estável para telemetria / feedback da interface (por exemplo, 'TableMetadata'). Não precisa ser amigável para humanos — é um identificador de máquina, a interface de administrador pode mapear para um rótulo localizado.

Métodos

Nome
Parâmetros
Tipo
Descrição
ClearAsyncCancellationToken cancellationToken
Task
Limpa o conteúdo do cache. Para caches que mantêm dados pré-carregados (por exemplo, StringLocalizerCache), as implementações devem reconstruir o dados atômicos, então leitores existentes continuam a ver os dados antigos até que O novo estado está totalmente povoado. Para caches preguiçosos / sob demanda, dropping as entradas são suficientes — o próximo chamador aciona uma nova carga.
Nome: ClearAsync
Parâmetros: CancellationToken cancellationToken
Tipo: Task
Descrição: Limpa o conteúdo do cache. Para caches que mantêm dados pré-carregados (por exemplo, StringLocalizerCache), as implementações devem reconstruir o dados atômicos, então leitores existentes continuam a ver os dados antigos até que O novo estado está totalmente povoado. Para caches preguiçosos / sob demanda, dropping as entradas são suficientes — o próximo chamador aciona uma nova carga.

ICacheManager Interface

Métodos

Nome
Parâmetros
Tipo
Descrição
ClearAllAsyncCancellationToken cancellationToken
Task<IReadOnlyList<CacheClearResult>>
Limpa todos os registros Services.IClearableCache em paralelo e retorna Um relatório por depósito. Um cache com falha não bloqueia os outros — sua entrada em o relatório carrega a mensagem de exceção em vez de null.
ClearAsyncstring name
CancellationToken cancellationToken
Task<CacheClearResult>
Limpa um cache nomeado. Retornos null quando não registrado correspondência name de cache (indistinto a maiúsculas e maiúsculas). Falhas são enroladas no resultado, em vez de lançado, correspondendo Threading.CancellationToken).
GetCacheNamesIReadOnlyList<string>
Retorna os nomes de cada registrado Services.IClearableCache, adequado para uma interface de administrador que quer renderizar botões de limpeza por cache.
Nome: ClearAllAsync
Parâmetros: CancellationToken cancellationToken
Tipo: Task<IReadOnlyList<CacheClearResult>>
Descrição: Limpa todos os registros Services.IClearableCache em paralelo e retorna Um relatório por depósito. Um cache com falha não bloqueia os outros — sua entrada em o relatório carrega a mensagem de exceção em vez de null.
Nome: ClearAsync
Parâmetros: string name
CancellationToken cancellationToken
Tipo: Task<CacheClearResult>
Descrição: Limpa um cache nomeado. Retornos null quando não registrado correspondência name de cache (indistinto a maiúsculas e maiúsculas). Falhas são enroladas no resultado, em vez de lançado, correspondendo Threading.CancellationToken).
Nome: GetCacheNames
Tipo: IReadOnlyList<string>
Descrição: Retorna os nomes de cada registrado Services.IClearableCache, adequado para uma interface de administrador que quer renderizar botões de limpeza por cache.