Configuração do aplicativo
Gorjeta
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 pelo 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 reconhece o ambiente e sabe se está sendo executado no seu Production
ambiente OR Development
. O indicador de ambiente é definido na variável de ambiente do ASPNETCORE_ENVIRONMENT
sistema. Se nenhum valor estiver configurado, o padrão do aplicativo será executado no Production
ambiente.
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 formato e 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 section1:key0
de configuração acessa o section1
valor literal do key0
objeto.
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.
- Carregado apenas quando executado
Development
no ambiente. - Associado a um aplicativo específico.
- Gerenciado com o comando da CLI do
user-secrets
.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 nivelados e separados por dois pontos quando lidos dentro do seu aplicativo. No entanto, alguns sistemas operacionais não permitem os nomes de variáveis de ambiente de caracteres de dois pontos. 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__ApiKey
de 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 retorno do 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 é semelhante à 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 do aspNetCore
aplicativo pode ser definida aninhando um environmentVariables
elemento no elemento . 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ção no aplicativo
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 instrução anterior torna o IConfiguration
objeto disponível como a Configuration
variável em todo o resto 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 fortemente tipada
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 precisa herdar de uma classe pai.
- Deve incluir
public
propriedades que correspondam às propriedades e referências de tipo para a estrutura de configuração que você deseja capturar.
Para o exemplo de appsettings.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 do aplicativo, você pode adicionar um parâmetro de entrada a classes ou uma @inject
diretiva em modelos do tipo IOptions<MyConfig>
Razor para receber as definições de configuração fortemente tipadas. A IOptions<MyConfig>.Value
propriedade produzirá o MyConfig
valor preenchido a partir das definições de configuração.
@inject IOptions<MyConfig> options
@code {
var MyConfiguration = options.Value;
var theSetting = MyConfiguration.section1.key0;
}
Mais informações sobre o recurso Opções podem ser encontradas no padrão Opções no documento ASP.NET Core.