ASP .NET -  Definindo a página padrão do seu site no web.config


 Neste artigo vou mostrar com definir a página padrão do seu web site no ISS usando o arquivo Web.config para uma aplicação ASP .NET. (Válido para as versões superiores do .NET Framework 3.0)

O arquivo web.config pode ser usado para definir um documento padrão, ou uma lista de documentos padrão para o seu site. Pode ser usado também para alterar o documento padrão (página) para um site completo, ou em um diretório. A página padrão pode ser um .php, .asp, .htm, aspx, .cfm, ou qualquer outro tipo de arquivo tratada pelo servidor web.

O documento padrão é retornado para o cliente quando o navegador requista o nome do diretório (Ex: macoratti.net/) mas não especifica uma página. Se não houver um documento padrão no diretório o cliente vai receber uma mensagem de erro de 'arquivo não encontrado'  ou de acesso negado.

O servidor web está configurado para procurar arquivos padrão e o IIS define os seguintes documentos no arquivo ApplicationHost.config :

Por padrão, quando um pedido chega para diretório raiz do aplicativo do seu site o IIS envia uma resposta para o navegador com base nos nomes de arquivo que você definiu no elemento <defaultDocument> do arquivo web.config.

O IIS tenta retornar os arquivos corretos na ordem em que aparecem no elemento <defaultDocument>. Se o arquivo Default.htm existe, IIS envia para o navegador do cliente. Se o arquivo Default.htm não existe, IIS tenta enviar o arquivo Default.asp para o navegador, e se o arquivo Default.asp não existe, IIS tenta enviar o arquivo Default.aspx para o navegador; o IIS continua nesse procedimento até que ele tente enviar cada arquivo de documento padrão para o navegador cliente.

Você pode configurar o elemento <defaultDocument> a nível de servidor no arquivo ApplicationHost.config e a nível de site, aplicação ou URL no arquivo Web.Config.

O elemento <defaultDocument> permite ativar ou desativar o comportamento padrão dos documentos para o seu site ou aplicativo. Este elemento contém um elemento filho <files>, que contém um conjunto de elementos <add>.

Cada elemento <add> define os documentos padrão que o site ou aplicativo irá retornar para um navegador quando o site recebe uma solicitação para o diretório raiz.

O elemento <defaultDocument> também pode conter um ou mais elementos <remove> que remove um arquivo de documento padrão específico herdado de um arquivo de configuração de nível superior no servidor IIS - Internet Information Services.

Você também pode usar o elemento <clear> para remover todas as configurações do documento padrão definido superior na hierarquia de configuração.

Dessa forma, se você deseja alterar a ordem de documento padrão ou adicionar outro nome de arquivo pode fazer isso no arquivo web.config. Para isso basta alterar a ordem dos elementos <add> no elemento <defaultDocument>.

O seguinte exemplo de configuração, incluído em um arquivo Web.config para um site ou aplicativo, permite definir documentos padrão para o site ou aplicativo.  Em seguida, adiciona o nome do arquivo "home.html" na lista de documentos padrão do site ou aplicativo:

<configuration>
   <system.webServer>
      <defaultDocument enabled="true">
         <files>
            <add value="home.html" />
         </files>
      </defaultDocument>
   </system.webServer>
</configuration>

Neste outro exemplo estamos habilitando os documentos padrão para o diretório,  removendo a lista existente de documentos padrão e definindo nova uma lista de documentos:

<configuration>
   <system.webServer>
    <defaultDocument enabled="true">    <!-- habilita o documento padrão para o diretório -->
       <files>      
           <clear/>                                    <!-- remove a lista de documentos padrão existente -->                
           <add value="teste.htm"/>           <!-- teste.htm é agora o documento padrão  -->                
           <add value="teste.aspx"/>          <!-- segundo documento padrão na ordem de busca -->                
           <add value="teste.asp/>             <!-- terceiro documento padrão na ordem de busca -->                
           <add value="teste.php/>            <!-- quarto documento padrão na ordem de busca -->
       </files>
    </defaultDocument>
   </system.webServer>
</configuration>

Definindo um documento padrão via Painel de Controle

Você também pode incluir um documento padrão para uma aplicação ou site no IIS via painel de controle. (Você precisa ter o IIS instalado)

Habilitando a lista de documentos padrão via código

Você também pode habilitar, adicionar e remover documentos padrão via código.

Para isso você vai precisar ter o IIS instalado e usar o namespace Microsoft.Web.Administration que contém as classes que podemos usar para administrar o IIS. Usando essas classes podemos ler e escrever informações de configuração nos arquivos ApplicationHost.config, Web.Config e Administration.config.

O exemplo de código a seguir habilita os documentos padrão para um web site chamado Macoratti e adiciona o arquivo chamado Home.html a uma lista de documentos padrão para o site:

using System;
using System.Text;
using Microsoft.Web.Administration;

namespace Aspnet_WebConfig_DefaultDocument
{
    class Program
    {
        static void Main(string[] args)
        {
            using (ServerManager serverManager = new ServerManager())
            {
                Configuration config = serverManager.GetWebConfiguration("Macoratti");
                ConfigurationSection defaultDocumentSection = config.GetSection("system.webServer/defaultDocument");
                defaultDocumentSection["enabled"] = true;
                ConfigurationElementCollection filesCollection = defaultDocumentSection.GetCollection("files");
                ConfigurationElement addElement = filesCollection.CreateElement("add");
                addElement["value"] = @"home.html";
                filesCollection.AddAt(0, addElement);
                serverManager.CommitChanges();
            }
        }
    }
}

A versão VB .NET do mesmo código é mostrada a seguir:

Imports System
Imports System.Text
Imports Microsoft.Web.Administration
Module Module1
    Sub Main()
        Dim serverManager As ServerManager = New ServerManager
        Dim config As Configuration = serverManager.GetWebConfiguration("Macoratti")
        Dim defaultDocumentSection As ConfigurationSection = config.GetSection("system.webServer/defaultDocument")
        defaultDocumentSection("enabled") = True
        Dim filesCollection As ConfigurationElementCollection = defaultDocumentSection.GetCollection("files")
        Dim addElement As ConfigurationElement = filesCollection.CreateElement("add")
        addElement("value") = "home.html"
        filesCollection.AddAt(0, addElement)
        serverManager.CommitChanges()
    End Sub
End Module

Existe ainda a opção de usar o utilitário de linha de comando APPCMD.EXE usado para gerenciar o IIS para fazer a mesma definição:

appcmd.exe set config "Macoratti" /section:defaultDocument /enabled:true /+files.[value='home.html'] 

Lembrando que essa ferramenta esta disponível a partir do IIS 7. 

Os seguintes exemplos são tarefas que podem ser concluídas com Appcmd.exe:

Para saber mais consulte a documentação nas referências do artigo.

"Porque as suas coisas invisíveis, desde a criação do mundo, tanto o seu eterno poder, como a sua divindade, se entendem, e claramente se vêem pelas coisas que estão criadas, para que eles fiquem inescusáveis"
Romanos 1:20

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Referências:


José Carlos Macoratti