Exportar (0) Imprimir
Expandir todo

Código de configuración de ejemplo de un módulo HTTP

Visual Studio 2005

Este ejemplo de código muestra una página Web que contiene el código para configurar un módulo HTTP. Para obtener información detallada sobre cómo utilizar esta página y sobre vínculos a los demás archivos de este ejemplo, vea Cómo: Crear y configurar un módulo HTTP.

Ejemplo

El ejemplo de código siguiente realiza estas acciones:

  • Enumera los módulos HTTP existentes que se configuran para una aplicación ASP.NET llamada /Temp.

  • Comprueba si hay una opción de configuración existente para el módulo HTTP llamado RequestTimeIntervalModule. Para examinar el código para este módulo, vea Ejemplo de módulo HTTP.

  • Proporciona la posibilidad de quitar cualquier configuración existente.

  • Crea una configuración, si no existe ya, para el módulo HTTP llamado RequestTimeIntervalModule.

Se crea un objeto HttpModuleAction para el nuevo módulo HTTP RequestTimeIntervalModule. Este objeto se utiliza en primer lugar para buscar una opción de configuración existente y luego para agregar una nueva opción de configuración. El formato del segundo parámetro del constructor es type name[, assembly name]. Debe incluir el nombre de ensamblado si ha compilado el módulo HTTP en un archivo DLL y lo ha colocado en la carpeta Bin de la aplicación ASP.NET. No es necesario que incluya el nombre de ensamblado si ha colocado el archivo de código fuente para el módulo HTTP en la carpeta App_Code de la aplicación ASP.NET.

Este código también se puede ejecutar desde una página .aspx si se han realizado los cambios adecuados, y si el usuario tiene permisos de escritura y lectura para el archivo Web.config. Normalmente, estos permisos están restringidos al administrador del servidor.

using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;
using System.Web.Configuration;

namespace Samples.Aspnet.Configure
{
    class ConfigureHttpModule
    {
        static void Main(string[] args)
        {
            try
            {
                // Set the configPath value to the path for your target Web site.
                string configPath = "/Temp";

                // Get the configuration object.
                Configuration config =
                  WebConfigurationManager.OpenWebConfiguration(configPath);

                // Call the EnumerateHttpModules subroutine.
                EnumerateHttpModules(config);

                // Call ConfigureHttpModules subroutine.
                ConfigureHttpModules(config);
            }
            catch (ArgumentException e)
            {
                Console.WriteLine(e.ToString());
            }
        }

        private static void ConfigureHttpModules(Configuration config)
        {
            Console.WriteLine();

            // Get the <httpModules> section.
            HttpModulesSection section = 
                (HttpModulesSection)config.GetSection("system.web/httpModules");

            // Create a new module action object.
            HttpModuleAction myHttpModuleAction = new HttpModuleAction(
                "RequestTimeIntervalModule",
                "Samples.Aspnet.HttpModuleExamples.RequestTimeIntervalModule");
            
            // Look for an existing configuration for this module.
            int indexOfModule = section.Modules.IndexOf(myHttpModuleAction);
            if (-1 != indexOfModule)
            {
                Console.WriteLine("RequestTimeIntervalModule module is already configured at index {0}",
                    indexOfModule);
                Console.WriteLine("Delete existing module configuration? (Y/N)");
                string deleteModule = Console.ReadLine();
                if (("Y" == deleteModule) || ("y" == deleteModule))
                {
                    section.Modules.Remove("RequestTimeIntervalModule");
                    if (!section.SectionInformation.IsLocked)
                        config.Save();

                    Console.WriteLine("Existing RequestTimeIntervalModule module configuration deleted.");
                    Console.WriteLine("Run the tool again to configure the RequestTimeIntervalModule module.");
                }
                else
                {
                    Console.WriteLine("Configuration not changed");
                }
            }
            else
            {
                section.Modules.Add(myHttpModuleAction);

                if (!section.SectionInformation.IsLocked)
                {
                    config.Save();
                    Console.WriteLine("RequestTimeIntervalModule module configured.");
                }
                else
                {
                    Console.WriteLine("Could not configure RequestTimeIntervalModule module.");
                }
            }

        }

        private static void EnumerateHttpModules(Configuration config)
        {
            Console.WriteLine();

            // Get the <httpModules> section.
            HttpModulesSection section = 
                (HttpModulesSection)config.GetSection("system.web/httpModules");

            StringBuilder output = new StringBuilder();
            output.AppendFormat("<httpModules> modules element in {0}:\r\n", 
                config.FilePath.ToString());

            for (int i = 0; i < section.Modules.Count; i++)
            {
                output.AppendFormat("  {0}, {1}\r\n", 
                    section.Modules[i].Name.ToString(), 
                    section.Modules[i].Type.ToString());
            }

            Console.WriteLine(output);

        }
    }
}

Vea también

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft