Partilhar via


Demonstra Passo a passo: Configurando aplicativos ASP.NET no IIS 7.0

Se um aplicativo ASP.NET estiver hospedado no IIS 7.0, você pode fazer configurações para o aplicativo de diversas maneiras.Isto inlcui o seguinte:

  • Usar Gerenciador do IIS.Para obter mais informações, consulte Como: Abra o Gerenciador do IIS e Serviços de Informações da Internet (Serviços de Informações da Internet) Manager.

  • Editar diretamente o arquivo Web.config.Você pode fazer isso no Visual Studio ou Visual Web Developer, ou usando um programa de edição de texto.

  • Usar a ferramenta de linha de comando do IIS 7.0 (Appcmd.exe).Este utilitário permite que você especifique definições de configuração do IIS e definições de configuração de aplicação Web.Para obter mais informações, consulte IIS 7.0 ferramenta de linha de comando.

  • Usando Instrumentação de Gerenciamento de Janela (WMI).O provedor IIS 7.0 WMI de namespace WebAdministration contém classes e métodos que permitem que você crie script para as tarefas de administração de sites da Web, aplicativos da Web e seus objetos associados e propriedades.Para obter mais informações, consulte IIS 7.0: WMI.

IIS 7.0 possui uma arquitetura modular que permite que você especifique quais módulos compõem a funcionalidade de um servidor Web.Quando IIS 7.0 estiver instalado, por padrão muitos módulos não estão ativados.Quando você estiver trabalhando com sites da Web ASP.NET, talvez queira ativar os seguintes módulos:

  • Módulo de Compatibilidade de gerenciamento do IIS 6, que permite que Visual Studio use chamadas da metabase para interagir com o armazenamento de configuração IIS 7.0.

  • Módulo de autenticação do Windows, que permite você depurar aplicativos da Web no Visual Studio.

Para obter mais informações, consulte Executando Aplicativos da Web no Windows Vista com o IIS 7.0 e Visual Studio e Executando aplicativos da Web no Windows Server 2008 com o IIS 7.0 e Visual Studio.

Nessa explicação passo a passo, você irá fazer configurações, usando Gerenciador do IIS e ver como as configurações são refletidas no arquivo web.config de um aplicativo da Web.Tarefas ilustradas nesta explicação passo a passo incluem o seguinte:

  • Criando um módulo de código gerenciado personalizado e colocando o módulo no diretório App_Code de um aplicativo da Web.

  • Registrar o módulo personalizado usando Gerenciador do IIS.

  • Adicionar um cabeçalho HTTP personalizado usando Gerenciador do IIS.

A funcionalidade do módulo não é importante nessa explicação passo a passo.Em vez disso, o explicação passo a passo mostra como o módulo é integrado ao fluxo de solicitação e como configurar o aplicativo usando Gerenciador do IIS afeta o arquivo web.config.

Pré-requisitos

A fim de concluir este explicação passo a passo, será necessário:

  • IIS 7.0 instalado e em execução em qualquer Windows Vista ou Windows Server 2008.

  • Pelo menos um pool que está sendo executado no IIS 7.0 modo integrado.

  • O módulo Gerenciamento de Compatibilidade IIS 6 ativado no IIS 7.0 .

  • Visual Studio 2008.

  • O .NET Framework versão 3,0 ou posterior.

  • Permissões administrativas em seu computador.

  • Uma ferramenta para examinar solicitações e respostas entre o computador e sistema autônomo servidores da Web, sistema autônomo, por exemplo, a ferramenta Fiddler, que está disponível a partir de HTTPFiddler Web depuração Proxy Site da Web.

    Observação:

    Fiddler é uma ferramenta de terceiros que não é suportada pela Microsoft.

Criando um módulo http personalizado

Para começar, você criará um novo site.

Para criar um novo site

  1. In Visual Studio, criar um novo local HTTP site chamado WalkthroughIIS7.

    Para obter informações adicionais sobre como criar um site da Web do IIS local, consulte Demonstra Passo a passo: Criar um site IIS local no Visual Web Developer.

  2. No menu Iniciar, clique em Todos os Programas, clique em Acessórios, e em seguida clique em Executar.

  3. Na caixa Abrir digite inetmgr e clique em OK.

    Observação:

    Se Controle de Conta de Usuário (UAC) estiver ativado, ele pode exibir uma mensagem ao tentar acessar Gerenciador do IIS.Em caso afirmativo, clique em Continuar.Para obter mais informações, consulte Controle de conta de usuário.

  4. Verifique se o site está em um pool de aplicativos executando no modo integrado.

    Para obter informações sobre como conjunto o modo de um aplicativo Web Web, consulte Configurar o modo de processamento de solicitação para um pool de aplicativos.

Agora você pode criar o módulo HTTP personalizado.

Para criar um módulo HTTP personalizado

  1. In Visual Studio, em O gerenciador de soluções, clicar com o botão direito do mouse no nó do projeto Web e em seguida, clique em Adicionar novo item.

    A caixa de diálogo Add New Item é exibida.

  2. No Visual Studio installed templates, clique em Class.

  3. Selecione a linguagem de programação que você prefere usar.

  4. Para o nome da classe, digite CustomModule e, em seguida, clicar Adicionar.

    Se o site ainda não contiver uma pasta App_Code, será exibida uma mensagem que pergunta se você quer colocar a classe na pasta App_Code.Em caso afirmativo, clique em Sim.

  5. Excluir o código existente na classe e substitui-lo com o código a seguir:

    Imports System
    Imports System.Configuration
    Imports System.Web
    Imports System.Web.Security
    Imports System.Web.UI
    
    Public Class CustomModule
        Implements IHttpModule
    
        Public Sub New()
            ' Constructor
        End Sub
    
        Public Sub Init(ByVal app As HttpApplication) Implements IHttpModule.Init
            AddHandler app.BeginRequest, AddressOf Me.BeginRequest
        End Sub
    
    
        Public Sub BeginRequest(ByVal source As Object, ByVal e As EventArgs)
            Dim app As HttpApplication = CType(source, HttpApplication)
            Dim cont As HttpContext = app.Context
            Dim notification As String = cont.CurrentNotification.ToString()
            Dim postNotification As String = cont.IsPostNotification.ToString()
            cont.Response.Headers.Set("CustomHeader2", "ASPX, Event = " & notification & _
                    ", PostNotification = " & postNotification + _
                    ", DateTime = " & DateTime.Now.ToString())
    
        End Sub
    
        Public Sub Dispose() Implements IHttpModule.Dispose
        End Sub
    End Class
    
    using System;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    
    public class CustomModule : IHttpModule
    {
        public CustomModule()
        {
            // Constructor
        }
        public void Init(HttpApplication app)
        {
            app.BeginRequest += new EventHandler(BeginRequest);
        }
        public void BeginRequest(object source, EventArgs e)
        {
    
            HttpApplication app = (HttpApplication)source;
            HttpContext cont = app.Context;
            string notification = cont.CurrentNotification.ToString();
            string postNotification = cont.IsPostNotification.ToString();
            cont.Response.Headers.Set("CustomHeader2", "ASPX, Event = " + notification +
                    ", PostNotification = " + postNotification +
                    ", DateTime = " + DateTime.Now.ToString());
    
        }
        public void Dispose()
        {
        }
    }
    

    O código faz o seguinte:

    • Define um módulo de código gerenciado personalizado que implementa a interface IHttpModule.

    • Define um manipulador de eventos para o evento BeginRequest da instância HttpApplication.O manipulador de eventos define um cabeçalho personalizado para adicionar à coleção de cabeçalho de resposta.

    • Adiciona o manipulador ao fluxo de solicitação para notificação no método Init do módulo.

    Devido a classe implementar a interface IHttpModule, a classe deve implementar um método Init e um método Dispose.O método Dispose neste módulo apresenta nenhuma funcionalidade, mas isso é onde você pode implementar lógica de descarte se precisar.

  6. No menu Compilar, clique em Criar Site da Web para certificar-se que não há erros no módulo.

Como a última tarefa contidas nesta seção, você irá criar páginas ASP.NET e HTML que permitirá que você teste o módulo personalizado posteriormente na explicação passo a passo.

Para criar o ASP.NET e páginas de teste HTML

  1. Adicione uma nova página da Web ASP.NET de arquivo único chamada ASPXpage.aspx para a pasta raiz do aplicativo.

  2. Remover a marcação existente e substituí-la pela marcação a seguir:

    <%@ Page Language="VB" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <script >
    
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head >
        <title>ASPX Module Test Page</title>
    </head>
    <body>
        <form id="form1" >
        <div>
        <%= Response.Headers.Get("CustomHeader2").ToString() %>
        </div>
        </form>
    </body>
    </html>
    
    <%@ Page Language="C#" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <script >
    
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head >
        <title>ASPX Module Test Page</title>
    </head>
    <body>
        <form id="form1" >
        <div>
        <%= Response.Headers.Get("CustomHeader2").ToString() %>
        </div>
        </form>
    </body>
    </html>
    
  3. Adicione uma nova página HTML chamada HTMLPage.htm para a pasta raiz do aplicativo da Web.

  4. Adicione a seguinte marcação à página.

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title>HTML Module Test Page</title>
    </head>
    <body>
        <div>
           HTML page.
           <br />
        </div>
    </body>
    </html>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title>HTML Module Test Page</title>
    </head>
    <body>
        <div>
           HTML page.
           <br />
        </div>
    </body>
    </html>
    
  5. Salvar todas as alterações.

  6. Execute a página ASPXpage.aspx e a página HTMLpage.htm individualmente para verificar que possam ser exibidas em um navegador.

    Observação:

    Deixe o aplicativo Visual Studio aberto.Você retornará a esse aplicativo para verificar as alterações de configuração que você fará usando Gerenciador do IIS.

Neste ponto, as páginas executam mas elas não chamam o módulo personalizado.No próximo procedimento, você adicionará o módulo personalizado ao fluxo de pedido.

Fazer alterações de configuração usando o Gerenciador do IIS

Nesta seção você usará Gerenciador do IIS para fazer várias configurações para o aplicativo do IIS.Você irá registrar o módulo personalizado, adicionar um cabeçalho personalizado e desativar a compactação estática.

Para registrar o módulo de código gerenciado personalizado

  1. No menu Iniciar, clique em Todos os Programas, clique em Acessórios, e em seguida clique em Executar.

  2. Na caixa Abrir digite inetmgr e clique em OK.

    Observação:

    Se Controle de Conta de Usuário (UAC) estiver ativado, ele pode exibir uma mensagem ao tentar acessar Gerenciador do IIS.Em caso afirmativo, clique em Continuar.Para obter mais informações, consulte Controle de conta de usuário.

  3. No painel de Conexões, expanda o nome do computador ou do servidor que está hospedando o site.

  4. Expanda a pasta Sites.

  5. selecionar WalkthroughIIS7 site da Web.In Windows Server 2008, se aplicativo Web Web é um aplicativo Web de um site da Web, expandir site da Web pela primeira vez e, em seguida, selecionar WalkthroughIIS7.

    Por padrão, o painel central do Gerenciador do IIS exibe opções de configuração de servidor Web por área.Para aplicativo Web Web WalkthroughIIS7 existem duas áreas: ASP.NET and IIS.

  6. Na seção IIS do painel central, clique duas vezes no ícone Modules.

    O detalhe Modules no painel central mostra todos os módulos que estão configurados para o IIS no momento.

  7. No painel Actions, clique em Adicionar módulo gerenciado.

    A caixa de diálogo Adicionar Módulo Gerenciado é exibida.

  8. Tipo CustomModule no Nome box.

    The name can be any word or phrase that describes the module.In this walkthrough you will use just the name of the module.

  9. In the Type list, select or type the fully qualified name of managed type for the module.

    O tipo CustomModule aparece na lista porque a configuração do IIS inclui as classes na pasta App_Code que implementam IHttpModule.

  10. Make sure that the Invoke only for request to ASP.NET applications or managed handlers check box is not selected.

    For this walkthrough, you want the module to apply to all requests in the pipeline, not just ASP.NET requests.

  11. Clique em OK.

    The managed-code module is added to the list of modules.You might have to scroll or re-sort the list to see the added module.

To add a custom response header

  1. No painel esquerdo de Gerenciador do IIS, clicar no nome do nó WalkthroughIIS7 para exibir o painel de configuração principal para o site.

  2. In the center pane, in the IIS settings section, double-click the HTTP Response Headers icon.

    The HTTP Response Headers feature detail is displayed in the center pane.It shows all the HTTP response headers that are currently defined.

  3. In the Actions pane, click Add.

    The Add Custom HTTP Response Header dialog box is displayed.

  4. No Nome caixa de texto, digite CustomHeader1.

    The name can be any word or phrase that describes the header.

  5. No Valor texto caixa, digite o valor SampleHeader.

You will now turn off static compression.This prevents static content such as the HTML pages from being compressed.

To turn off static compression

  1. clicar no nome do nó WalkthroughIIS7 no painel esquerdo para exibir o painel de configuração principal para o site no painel central.

  2. In the center pane of Gerenciador do IIS, double-click the Compression icon in the IIS settings section.

    The Compression feature detail is displayed in the center pane.

  3. Make sure that the Enable static content compression check box is cleared.

Verifying Configuration Changes in Visual Studio

In this walkthrough, you have performed the configuration tasks by using Gerenciador do IIS.In this procedure, you will view the changes in the application's Web.config file.

To check the module registration in the Web.config file

  1. Retornar para o Visual Studio aplicativos e para o aplicativo WalkthroughIIS7.

  2. In Solution Explorer, right-click the Web site name and then click Refresh Folder.

    This causes the Visual Studio view of the Web site folder to synchronize with the folder and files on disk.

    If the application did not originally contain a Web.config file, there is now a Web.config file in the Web application.If the application already had a Web.config file, changes were made to the file.

  3. In Solution Explorer, double-click the Web.config file to view its contents.

    The system.webServer section includes the configuration changes that you made by using Gerenciador do IIS.The system.webServer section has the following child elements:

    • A modules element that registers the custom module for the request processing pipeline.

    • An httpProtocol element that defines the custom response header.

    • A urlCompression element that disables static compression.

    The system.webServer section will resemble the following example:

    <system.webServer>
      <modules>
        <add name="CustomModule" type="CustomModule" preCondition="" />
      </modules>
      <httpProtocol>
        <customHeaders>
          <add name="CustomHeader1" value="SampleHeader" />
        </customHeaders>
      </httpProtocol>
      <urlCompression doStaticCompression="false" />
    </system.webServer>
    

    Para obter mais informações sobre o system.webServer seção, consulte Usando Configuração do ASP.NET e IIS 7.0: agrupar de seções (esquema de configurações do IIS) sistema.webServer.

Testing the Custom Module

IIS 7.0 has an integrated request pipeline.Requests for all application resources (such as an .aspx page or .htm page) can raise pipeline notifications in a managed-code module like the custom module that you have created in this walkthrough.

Observação:

When you configured the managed-code module in Gerenciador do IIS, you did not select the Invoke only for request to ASP.NET applications or managed handlers option.If you had selected this option, the custom module would receive pipeline notifications only for ASP.NET resources and not for static resources such as HTML files.

To verify that the custom module applies to all resources

  1. In Visual Studio, open the ASPXpage.aspx page and press CTRL+F5 to view the page in a browser.

    The custom header that is defined in the module is displayed in the browser.In the ASP.NET page, you cannot access the custom header defined by IIS, because this header information is added after the page content has been rendered to the stream.However, you can confirm that the header is set by using a tool that monitors HTTP traffic, such as Fiddler.

  2. Open the HTTP traffic monitoring tool and refresh the ASPXpage.aspx page in the browser.

    Observação:

    If the URL for the ASPXpage.aspx page uses localhost, change localhost to the name of the computer that IIS 7.0 is installed on.In a typical development scenario, this is also the computer that Visual Studio is running on.

  3. Verifique se CustomHeader1 e CustomHeader2 aparecem na coleção de cabeçalhos de resposta.

  4. View the HTMLPage.htm in a browser.

  5. Verifique se CustomHeader1 e CustomHeader2 aparecem na coleção de cabeçalhos de resposta.

Próximas etapas

This walkthrough provided you with an introduction to the configuration of ASP.NET in IIS 7.0.Configuration settings for the IIS 7.0 Web server and for ASP.NET are unified into one configuration file that you can edit using a single administrative interface.

You might also want to explore additional setting in Gerenciador do IIS and how changes are reflected in the configuration file.Para obter mais informações, consulte Serviços de Informações da Internet (Serviços de Informações da Internet)

Consulte também

Tarefas

Demonstra Passo a passo: Configurando aplicativos ASP.NET no IIS 6.0 usando o MMC

Conceitos

Movendo um aplicativo ASP.NET do IIS 6.0 para o IIS 7.0

Outros recursos

Configuring Modules in IIS 7.0

Configuring HTTP Response Headers in IIS 7.0