O comportamento de um aplicativo ASP.NET é determinado por configurações diferentes nos dois arquivos de configuração a seguir:
máquina.config
web.config
O arquivo machine.config contém valores padrão e específicos da máquina para todas as configurações suportadas. A máquina é configurada pelo administrador do sistema e os aplicativos geralmente não conseguem acessar esse arquivo.
No entanto, um aplicativo pode substituir o valor padrão criando um arquivo web.config em sua pasta raiz. O arquivo web.config é um subconjunto do arquivo machine.config.
Se o aplicativo contiver subdiretórios, ele poderá definir um arquivo web.config para cada pasta. O escopo de cada perfil é determinado de maneira hierárquica e descendente.
Qualquer arquivo web.config pode estender, restringir ou substituir localmente quaisquer configurações definidas acima.
O Visual Studio gera um arquivo web.config padrão para cada projeto. O aplicativo pode ser executado sem um arquivo web.config, entretanto, não podemos depurar um aplicativo sem um arquivo web.config.
A imagem a seguir mostra um exemplo do Solution Explorer usado no tutorial de serviços web:
Neste aplicativo, existem dois arquivos web.config correspondentes ao serviço web e ao site que chama o serviço web.
O elemento de configuração no arquivo web.config serve como nó raiz. As informações neste elemento são divididas em duas áreas principais: a área de declaração do manipulador da seção de configuração e a área de definições da seção de configuração.
O trecho de código a seguir mostra a sintaxe básica de um arquivo de configuração:
<configuration> <!-- Área de declaração do manipulador de seção de configuração --> <configSections> <section name="section1" type="section1Handler" /> <section name="section2" type="section2Handler" /> </ configSections> <!-- Área de configurações da seção de configuração --> <section1> <s1Setting1 atributo1="attr1" /> </section1> <section2> <s2Setting1 atributo1="attr1" /> </section2> <system.web> <modo de autenticação="Windows" /> </system.web> </configuration>
As declarações do manipulador de seção de configuração estão contidas em tags. Cada manipulador de configuração especifica o nome da seção de configuração e está contido em um arquivo que fornece alguns dados de configuração. Possui a seguinte sintaxe básica:
<configSections> <seção /> <sectionGroup /> <remove /> <clear/> </configSections>
Possui os seguintes elementos:
Limpar – Todas as referências a seções e grupos de seções herdados.
Remover – Remove uma seção e um grupo de seções referenciados herdados.
Seção - Define a associação entre manipuladores de seção de configuração e elementos de configuração.
Grupo de seções - Define a associação entre um manipulador de seção de configuração e uma seção de configuração.
As configurações do aplicativo permitem o armazenamento de pares nome-valor para aplicativos com acesso somente leitura. Por exemplo, você poderia definir uma configuração de aplicativo personalizada da seguinte forma:
<configuration> <appSettings> <add key="Nome do aplicativo" value="MyApplication" /> </appSettings> </configuration>
Por exemplo, você também pode armazenar o número ISBN e o par de dados do nome de um livro:
<configuration> <appSettings> <add key="appISBN" value="0-273-68726-3" /> <add key="appBook" value="Corporate Finance" /> </appSettings> </configuration>
A string de conexão mostra a string de conexão do banco de dados que pode ser usada para o site. Por exemplo:
<connectionStrings> <add name="ASPDotNetStepByStepConnectionString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Fonte de dados=E:\projectsdatacaching / datacachingApp_DataASPDotNetStepByStep.mdb" provedorName="System.Data. OleDb" /> <add name="booksConnectionString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Fonte de dados=C: databindingApp_Databooks.mdb" provedorName="System.Data.OleDb" /> </connectionStrings>
O elemento system.web especifica o elemento raiz da seção de configuração do ASP.NET e contém elementos de configuração que configuram o aplicativo Web ASP.NET e controlam a operação do aplicativo.
Ele controla a maioria dos elementos de configuração mais comuns que precisam ser ajustados. A sintaxe básica deste elemento é a seguinte:
<system.web> <anonymousIdentification> <autenticação> <autorização> <browserCaps> <caching> <clientTarget> <compilação> <customErrors> <deployment> <deviceFilters> <globalization> <healthMonitoring> <hostingEnvironment> <httpCookies> <httpHandlers> <httpModules> <httpRuntime> <identidade> <machineKey> <membership> <mobileControls> <pages> <processModel> <profile> <roleManager> <securityPolicy> <sessionPageState> <sessionState> <siteMap> <trace> <trust> <urlMappings> <webControls> <webParts> <webServices> <xhtmlConformance > </system.web>
A tabela a seguir fornece uma breve descrição dos subelementos de alguns elementos system.web comumente usados:
Isso é usado para identificar usuários não autenticados quando a confirmação da identidade do usuário é necessária.
É suportado pela autorização de configuração. A sintaxe básica é:
<autorização> <permitir .../> <negar .../> </autorização>
Ele define as configurações de cache.
<caching> <cache>...</cache> <outputCache>...</outputCache> <outputCacheSettings>...</outputCacheSettings> <sqlCacheDependency>...</sqlCacheDependency> </caching>
Ele define uma mensagem de erro personalizada. A sintaxe básica é:
<customErrors defaultRedirect="url" mode="On|Off|RemoteOnly"> <error.
Ele define as configurações usadas para implantação. A sintaxe básica é a seguinte:
<implantação varejo="true|false" />
Ele define as configurações do ambiente de hospedagem. A sintaxe básica é a seguinte:
<hostingEnvironment idleTimeout="HH:MM:SS" shadowCopyBinAssemblies="true|false" shutdownTimeout="number" urlMetadataSlidingExpiration="HH:MM:SS" />
É usado para configurar o mecanismo de autenticação do aplicativo. A sintaxe básica é a seguinte:
<identidade impersonate="true|false" userName="domínionome de usuário" senha="<senha segura>"/>
Ele é usado para configurar a chave usada para o cookie de autenticação de formulários para criptografar e descriptografar dados.
Ele também permite a configuração de chaves de autenticação para realizar verificações de autenticação de mensagens em dados de estado de visualização e tickets de autenticação de formulários. A sintaxe básica é:
<machineKey validaçãoKey="AutoGenerate,IsolateApps" [String] decryptionKey="AutoGenerate,IsolateApps" [String] validação="HMACSHA256" [SHA1 | " [Auto | DES | 3DES | AES | alg:nome_do_algoritmo] />
É usado para configurar o gerenciamento e autenticar parâmetros do usuário. A sintaxe básica é:
<membership defaultProvider="nome do provedor" userIsOnlineTimeWindow="número de minutos" hashAlgorithmType="SHA1"> <providers>...</providers> </membership>
Ele fornece configuração específica de páginas da web. A sintaxe básica é:
<páginas asyncTimeout="número" autoEventWireup="[True|False]" buffer="[True|False]" clientIDMode="[AutoID|Predictable|Static]" compilaçãoMode="[Always|Auto|Never]" controlRenderingCompatibilityVersion=" [3.5|4.0]" enableEventValidation="[Verdadeiro|Falso]" enableSessionState="[True|False|ReadOnly]" enableViewState="[True|False]" enableViewStateMac="[True|False]" keepScrollPositionOnPostBack="[True|False]" masterPageFile="caminho do arquivo" maxPageStateFieldLength="número" pageBaseType ="nome do tipo, assembly" pageParserFilterType="string" smartNavigation="[True|False]" styleSheetTheme="string" theme="string" userControlBaseType="typename" validRequest="[True|False]" viewStateEncryptionMode="[Always|Auto|Never]" > <controls>.. .</controls> <namespaces>...</namespaces> <tagMapping>...</tagMapping> <ignoreDeviceFilters>...</ignoreDeviceFilters> </pages>
É usado para configurar parâmetros de perfil de usuário. A sintaxe básica é:
<profile enabled="true|false" inherits="referência de tipo totalmente qualificado" automaticSaveEnabled="true|false" defaultProvider="nome do provedor"> <properties>...</properties> <providers>...</providers > </perfil>
Configure informações de configurações para funções de usuário. A sintaxe básica é:
<roleManager cacheRolesInCookie="true|false" cookieName="name" cookiePath="/" cookieProtection="All|Encryption|Validation|None" cookieRequireSSL="true|false " cookieSlidingExpiration="true|false " cookieTimeout="número de minutos " createPersistentCookie="true|false" defaultProvider="nome do provedor" domain="domínio de cookie"> enabled="true|false" maxCachedResults="número máximo de nomes de funções armazenados em cache" <providers>...</providers> </roleManager>
Usado para configurar políticas de segurança. A sintaxe básica é:
<securityPolicy> <trustLevel /> </securityPolicy>
Ele define mapeamentos para ocultar URLs originais e fornecer URLs mais fáceis de usar. A sintaxe básica é:
<urlMappings enabled="true|false"> <add.../> <clear /> <remove.../> </urlMappings>
Ele fornece o nome do local compartilhado para scripts de cliente. A sintaxe básica é:
<webControls clientScriptsLocation="String" />
Usado para configurar serviços da web.