Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Sugestão
Este conteúdo é um excerto do eBook, Blazor para ASP NET Web Forms Developers for Azure, disponível no .NET Docs ou como um PDF transferível gratuito que pode ser lido offline.
A principal maneira de carregar a configuração do aplicativo em Web Forms é com entradas no arquivo web.config — no servidor ou em um arquivo de configuração relacionado referenciado por web.config. Você pode usar o objeto estático ConfigurationManager para interagir com as configurações do aplicativo, cadeias de conexão do repositório de dados e outros provedores de configuração estendida que são adicionados ao aplicativo. É comum ver as interações com a configuração do aplicativo como visto no código a seguir:
var configurationValue = ConfigurationManager.AppSettings["ConfigurationSettingName"];
var connectionString = ConfigurationManager.ConnectionStrings["MyDatabaseConnectionName"].ConnectionString;
Com o ASP.NET Core e o lado Blazordo servidor, o arquivo web.config PODE estar presente se seu aplicativo estiver hospedado em um servidor Windows IIS. No entanto, não ConfigurationManager há interação com essa configuração e você pode receber uma configuração de aplicativo mais estruturada de outras fontes. Vamos dar uma olhada em como a configuração é coletada e como você ainda pode acessar informações de configuração de um arquivo web.config .
Fontes de configuração
ASP.NET Core reconhece que há muitas fontes de configuração que você pode querer usar para seu aplicativo. A estrutura tenta oferecer o melhor desses recursos por padrão. A configuração é lida e agregada a partir dessas várias fontes pelo ASP.NET Core. Os valores carregados posteriormente para a mesma chave de configuração têm precedência sobre os valores anteriores.
O ASP.NET Core foi projetado para ser sensível à nuvem e facilitar a configuração de aplicativos para operadores e desenvolvedores. ASP.NET Core é consciente do ambiente e sabe se está a ser executado no seu ambiente Production ou Development. O indicador de ambiente é definido na variável de ambiente do ASPNETCORE_ENVIRONMENT sistema. Se nenhum valor estiver configurado, o aplicativo será executado, por padrão, no ambiente Production.
Seu aplicativo pode acionar e adicionar configuração de várias fontes com base no nome do ambiente. Por padrão, a configuração é carregada dos seguintes recursos na ordem listada:
- appsettings.json ficheiro, se presente
- appsettings. {ENVIRONMENT_NAME}.json ficheiro, se presente
- Arquivo de segredos do usuário no disco, se presente
- Variáveis de ambiente
- Argumentos de linha de comando
appsettings.json o formato e o acesso
O arquivo appsettings.json pode ser hierárquico com valores estruturados como o seguinte JSON:
{
"section0": {
"key0": "value",
"key1": "value"
},
"section1": {
"key0": "value",
"key1": "value"
}
}
Quando apresentado com o JSON anterior, o sistema de configuração nivela os valores filho e faz referência aos seus caminhos hierárquicos totalmente qualificados. Um caractere de dois pontos (:) separa cada propriedade na hierarquia. Por exemplo, a chave de configuração section1:key0 acessa o valor section1 do objeto literal key0.
Segredos do utilizador
Os segredos do utilizador são:
- Valores de configuração armazenados em um arquivo JSON na estação de trabalho do desenvolvedor, fora da pasta de desenvolvimento do aplicativo.
- Apenas carregado quando executado no ambiente
Development. - Associado a um aplicativo específico.
- Gerido com o comando
user-secretsda CLI do .NET.
Configure seu aplicativo para armazenamento de segredos executando o user-secrets comando:
dotnet user-secrets init
O comando anterior adiciona um UserSecretsId elemento ao arquivo de projeto. O elemento contém um GUID, que é usado para associar segredos ao aplicativo. Em seguida, você pode definir um segredo com o set comando. Por exemplo:
dotnet user-secrets set "Parent:ApiKey" "12345"
O comando anterior disponibiliza a Parent:ApiKey chave de configuração na estação de trabalho de um desenvolvedor com o valor 12345.
Para obter mais informações sobre como criar, armazenar e gerenciar segredos de usuário, consulte o Armazenamento seguro de segredos de aplicativos em desenvolvimento no documento ASP.NET Core .
Variáveis de ambiente
O próximo conjunto de valores carregados na configuração do seu aplicativo são as variáveis de ambiente do sistema. Todas as configurações de variáveis de ambiente do seu sistema agora estão acessíveis para você por meio da API de configuração. Os valores hierárquicos são reduzidos a uma única linha e separados por dois pontos quando são lidos na sua aplicação. No entanto, alguns sistemas operativos não permitem o uso de caracteres de dois pontos em nomes de variáveis de ambiente. ASP.NET Core aborda essa limitação convertendo valores com sublinhados duplos (__) em dois pontos quando são acessados. O Parent:ApiKey valor da seção de segredos do usuário acima pode ser substituído pela variável Parent__ApiKeyde ambiente .
Argumentos de linha de comando
A configuração também pode ser fornecida como argumentos de linha de comando quando seu aplicativo é iniciado. Use a notação de traço duplo (--) ou barra (/) para indicar o nome do valor de configuração a ser definido e o valor a ser configurado. A sintaxe é semelhante aos seguintes comandos:
dotnet run CommandLineKey1=value1 --CommandLineKey2=value2 /CommandLineKey3=value3
dotnet run --CommandLineKey1 value1 /CommandLineKey2 value2
dotnet run Parent:ApiKey=67890
O regresso da web.config
Se você implantou seu aplicativo no Windows no IIS, o arquivo web.config ainda configura o IIS para gerenciar seu aplicativo. Por padrão, o IIS adiciona uma referência ao ASP.NET Core Module (ANCM). ANCM é um módulo nativo do IIS que hospeda seu aplicativo no lugar do servidor Web Kestrel. Esta seção web.config se assemelha à seguinte marcação XML:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\MyApp.exe"
stdoutLogEnabled="false"
stdoutLogFile=".\logs\stdout"
hostingModel="inprocess" />
</system.webServer>
</location>
</configuration>
A configuração específica da aplicação pode ser definida aninhando um elemento environmentVariables no elemento aspNetCore. Os valores definidos nesta seção são apresentados ao aplicativo ASP.NET Core como variáveis de ambiente. As variáveis de ambiente são carregadas adequadamente durante esse segmento de inicialização do aplicativo.
<aspNetCore processPath="dotnet"
arguments=".\MyApp.dll"
stdoutLogEnabled="false"
stdoutLogFile=".\logs\stdout"
hostingModel="inprocess">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
<environmentVariable name="Parent:ApiKey" value="67890" />
</environmentVariables>
</aspNetCore>
Ler configurações na aplicação
O ASP.NET Core fornece a configuração do aplicativo por meio da IConfiguration interface. Essa interface de configuração deve ser solicitada por seus Blazor componentes, Blazor páginas e qualquer outra classe gerenciada pelo ASP.NET Core que precise de acesso à configuração. A estrutura ASP.NET Core preencherá automaticamente essa interface com a configuração resolvida configurada anteriormente. Em uma Blazor página ou marcação Razor de um componente, você pode injetar o IConfiguration objeto com uma @inject diretiva na parte superior do arquivo .razor como esta:
@inject IConfiguration Configuration
Esta declaração anterior torna o IConfiguration objeto disponível como a Configuration variável ao longo do restante do modelo Razor.
As definições de configuração individuais podem ser lidas especificando a hierarquia de definições de configuração procurada como um parâmetro indexador:
var mySetting = Configuration["section1:key0"];
Você pode buscar seções de configuração inteiras usando o GetSection método para recuperar uma coleção de chaves em um local específico com uma sintaxe semelhante a GetSection("section1") para recuperar a configuração da seção 1 do exemplo anterior.
Configuração com tipagem forte
Com Web Forms, foi possível criar um tipo de configuração fortemente tipado que herdou do ConfigurationSection tipo e tipos associados. A ConfigurationSection permitiu que você configure algumas regras de negócios e processamento para esses valores de configuração.
No ASP.NET Core, você pode especificar uma hierarquia de classe que receberá os valores de configuração. Estas classes:
- Não é necessário herdar de uma classe base.
- Deve incluir
publicpropriedades que correspondam às propriedades e referências de tipo para a estrutura de configuração que você deseja capturar.
Para o exemplo deappsettings.json anterior, você pode definir as seguintes classes para capturar os valores:
public class MyConfig
{
public MyConfigSection section0 { get; set;}
public MyConfigSection section1 { get; set;}
}
public class MyConfigSection
{
public string key0 { get; set; }
public string key1 { get; set; }
}
Essa hierarquia de classes pode ser preenchida adicionando a seguinte linha ao Startup.ConfigureServices método (ou local apropriado em Program.cs usando a builder.Services propriedade em vez de services):
services.Configure<MyConfig>(Configuration);
No restante da aplicação, é possível adicionar um parâmetro de entrada às classes ou uma diretiva @inject em modelos Razor do tipo IOptions<MyConfig> para receber as definições de configuração fortemente tipadas. A propriedade IOptions<MyConfig>.Value produzirá o valor MyConfig preenchido a partir das configurações.
@inject IOptions<MyConfig> options
@code {
var MyConfiguration = options.Value;
var theSetting = MyConfiguration.section1.key0;
}
Mais informações sobre o recurso de Opções podem ser encontradas no documento padrão de Opções no ASP.NET Core.