Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original.
Traducción
Original
Este tema aún no ha recibido ninguna valoración - Valorar este tema

Información general sobre la API de configuración de ASP.NET

La API de configuración de ASP.NET permite desarrollar, implementar y administrar datos de configuración de aplicación mediante una sola interfaz de programación. Puede utilizar la configuración API para desarrollar y modificar mediante programación las configuraciones de ASP.NET completas sin editar directamente el XML en los archivos de configuración. Además, puede utilizar la API de configuración en aplicaciones de consola y scripts que desarrolle, en herramientas de administración basadas en Web y en complementos MMC (Microsoft Management Console). Las dos herramientas de administración y configuración siguientes utilizan la API de configuración y están incluidas en la versión .NET Framework:

  • El complemento MMC de ASP.NET, que utiliza la API de configuración para simplificar las tareas administrativas y proporciona una vista integrada de los datos de configuración local de todos los niveles de la jerarquía de configuración.

  • La herramienta Administración de sitios Web, que permite administrar las opciones de configuración para aplicaciones locales y remotas, incluso los sitios hospedados.

La API de configuración de ASP.NET es independiente de la API de configuración mediante programación de Internet Information Services (IIS). Para obtener más información, vea Using IIS Programmatic Administration.

La API de configuración de ASP.NET comprende un conjunto de objetos de administración de ASP.NET que puede utilizar para configurar mediante programación sitios Web y aplicaciones. Los objetos de administración se implementan como una biblioteca de clases de .NET Framework. El modelo de programación de la API de configuración ayuda a garantizar la coherencia y la fiabilidad del código aplicando los tipos de datos en tiempo de compilación.

Para facilitar la administración de las configuraciones de aplicación, la API de configuración permite ver los datos que se combinan desde todos los puntos de la jerarquía de configuración como una colección única, en lugar de ver los datos como colecciones individuales de distintos archivos de configuración. Además, la API de configuración permite manipular las configuraciones de aplicación completas sin editar directamente el XML en los archivos de configuración. Por último, la API simplifica las tareas de configuración al admitir herramientas administrativas, como la herramienta Administración de sitios Web.

La API de configuración simplifica la implementación al admitir la creación de archivos de configuración en un equipo y ejecutar scripts de configuración en varios equipos.

La API de configuración no admite la creación de aplicaciones IIS. Para obtener información sobre cómo escribir aplicaciones de administración para IIS, vea Using System.DirectoryServices to Configure IIS en el SDK de IIS.

Un objeto Configuration representa la vista combinada de las opciones de configuración que se aplican a una entidad física específica, como un equipo, o a una entidad lógica, como una aplicación o sitio Web. La entidad lógica especificada puede existir en el equipo local o en un servidor remoto.

Cuando no existen archivos de configuración para una entidad especificada, el objeto Configuration representa las opciones de configuración predeterminadas tal se se definen en el archivo Machine.config.

Puede obtener un objeto Configuration utilizando uno de los métodos de configuración abiertos de las clases siguientes:

Estos métodos devolverán un objeto Configuration, que a su vez proporciona los métodos y propiedades necesarios para controlar los archivos de configuración subyacentes. Puede tener acceso de lectura o escritura a estos archivos.

Para leer información, se utilizan los métodos GetSectionGroup o GetSection. El usuario o el proceso que lee debe tener permisos de lectura en todos los archivos de configuración de la jerarquía.

Nota Nota

Si utiliza un método GetSection estático que acepta un parámetro path, el parámetro path debe hacer referencia a la aplicación en la que se ejecuta el código. De lo contrario, se omite el parámetro y se devuelve la información de configuración para la aplicación que está actualmente en ejecución.

Para escribir información, puede usar uno de los métodos Save(ConfigurationSaveMode). El usuario o el proceso que escribe debe tener permisos de escritura en el archivo y el directorio de configuración en el nivel de jerarquía de configuración actual, así como permisos de lectura en todos los archivos de configuración de la jerarquía.

Para generar un archivo de configuración que representa las opciones de configuración heredadas para una entidad especificada, utilice uno de los siguientes métodos de configuración de guardado:

Nota Nota

Para permitir el acceso a los valores de configuración en un equipo remoto, utilice la herramienta de línea de comandos Aspnet_regiis. Para obtener más información sobre esta herramienta, vea Herramienta Registro de IIS en ASP.NET (Aspnet_regiis.exe). Para obtener información sobre cómo crear y tener acceso a opciones de configuración personalizadas distintas de las secciones intrínsecas incluidas en .NET Framework, vea ConfigurationSection.

Ejemplos de código

Desde una página ASP.NET, puede utilizar el código siguiente para obtener información de configuración sobre la aplicación en la que se ejecuta la página ASP.NET. En el siguiente ejemplo se muestra una página denominada HandleAppSettings.aspx y el archivo de código relacionado. La página muestra cómo leer y escribir la sección de configuración appSettings.

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="HandleAppSettings.aspx.vb" Inherits="HandleAppSettings" %>

<!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 runat="server">
     <title>Handle Application Settings</title>
</head>
<body>
  <form id="form1" runat="server">
    <h2>Handle Application Settings</h2>
    <asp:Label ID="Label1" Text="[Application Settings go here.]" 
      runat="server"></asp:Label>
    <hr />
   <asp:Button ID="Button1" runat="server" onclick="Button1_Click" 
     Text="Write AppSettings" /> &nbsp; &nbsp;
   <asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="Read 
      AppSettings" />
  </form>
</body>
</html>
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="HandleAppSettings.aspx.cs" Inherits="HandleAppSettings" %>

<!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 runat="server">
    <title>Application Settings</title>
</head>
<body>
    <form id="form1" runat="server">
        <h2>Application Settings</h2>
        <asp:Label ID="Label1" Text="[Application Settings go here.]" 
          runat="server"></asp:Label>
        <hr />
       <asp:Button ID="Button1" runat="server" onclick="Button1_Click" 
          Text="Write AppSettings" /> &nbsp; &nbsp;
       <asp:Button ID="Button2" runat="server" onclick="Button2_Click"     
          Text="Read AppSettings" />
    </form>
</body>
</html>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class HandleAppSettings : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }
    
    protected void Button1_Click(object sender, EventArgs e)
    {
        // Get the application configuration file.
        System.Configuration.Configuration config =
          System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~/");
          
        // Add an entry to the appSettings section.
        int appStgCnt =
            System.Configuration.ConfigurationManager.AppSettings.Count;
        string newKey = "NewKey" + appStgCnt.ToString();

        string newValue = DateTime.Now.ToLongDateString() +
          " " + DateTime.Now.ToLongTimeString();

        // Update the configuration file appSettings section.
        config.AppSettings.Settings.Add(newKey, newValue);

        // Save the configuration file.
        config.Save(System.Configuration.ConfigurationSaveMode.Modified);

    }

    protected void Button2_Click(object sender, EventArgs e)
    {
        // Read the appSettings section.
        System.Text.StringBuilder buffer = new System.Text.StringBuilder();
        System.Collections.Specialized.NameValueCollection appSettings =
           System.Web.Configuration.WebConfigurationManager.AppSettings;
        for (int i = 0; i < appSettings.Count; i++)
        {
            string appEntry = String.Format("#{0} Key: {1} Value: {2} <br/>",
            i, appSettings.GetKey(i), appSettings[i]);
            buffer.Append(appEntry);
        }
        Label1.Text = buffer.ToString();
    }
}

Numerosas clases y métodos de configuración son similares entre sí. La tabla siguiente describe las clases de configuración y los espacios de nombres que más se utilizan. Para obtener información sobre escenarios de uso y ejemplos de código que utilizan estas clases y espacios de nombres, vea Utilizar las clases Configuration.

Clase de configuración o espacio de nombres

Descripción

Espacio de nombres System.Configuration

Contiene las clases de configuración principales para todas las aplicaciones de .NET Framework. Esto incluye las clases de controlador de secciones para las secciones de configuración de cliente .NET Framework definidas en Esquema de los archivos de configuración de .NET Framework. Las clases de controlador de secciones se utilizan para obtener datos de configuración para una sección a partir de métodos, como GetSection y GetSectionGroup. Estos dos métodos son no estáticos. Para obtener más información, consulte la sección Trabajar con métodos estáticos y no estáticos anteriormente en este tema.

Las clases de controlador de secciones de ASP.NET están contenidas en el espacio de nombres System.Web.Configuration.

System.Configuration.Configuration (clase)

Representa un conjunto de datos de configuración para un equipo, aplicación, directorio Web u otro recurso. Una instancia de la clase Configuration corresponde a las opciones de configuración combinadas contenidas en la jerarquía.

Esta clase contiene métodos útiles, como GetSection y GetSectionGroup, para actualizar las opciones de configuración, y obtener referencias a secciones y grupos de sección. Estos dos métodos son no estáticos. Para obtener más información, consulte la sección Trabajar con métodos estáticos y no estáticos anteriormente en este tema.

Esta clase se utiliza como un tipo de valor devuelto para los métodos que obtienen datos de configuración en tiempo de diseño, como los métodos de las clases WebConfigurationManager y ConfigurationManager.

Espacio de nombres System.Web.Configuration

Contiene las clases de controlador de secciones para las secciones de configuración de ASP.NET definidas en Opciones de configuración de ASP.NET. Las clases de controlador de secciones se utilizan para obtener datos de configuración para una sección a partir de métodos, como GetSection y GetSectionGroup. Estos dos métodos son estáticos. Para obtener más información, consulte la sección Trabajar con métodos estáticos y no estáticos anteriormente en este tema.

System.Web.Configuration.WebConfigurationManager (clase)

Proporciona métodos útiles para obtener referencias para opciones de configuración en tiempo de ejecución y en tiempo de diseño. Estos métodos utilizan la clase System.Configuration.Configuration como un tipo de valor devuelto. Puede utilizar de forma intercambiable el método GetSection estático de esta clase o el método GetSection no estático de la clase System.Configuration.ConfigurationManager. Para obtener más información, consulte la sección Trabajar con métodos estáticos y no estáticos anteriormente en este tema.

Para las configuraciones de aplicación Web, se recomienda utilizar la clase System.Web.Configuration.WebConfigurationManager y no la clase System.Configuration.ConfigurationManager.

Espacio de nombres System.Configuration.Provider

Muestra una forma de personalizar y extender el proveedor de configuración. Ésta es la clase base para todas las clases de proveedores del sistema de configuración.

Espacio de nombres System.Web.Management

Contiene clases e interfaces que permiten administrar y supervisar el estado de las aplicaciones Web. En sentido estricto, este espacio de nombres no se considera parte de la API de configuración. Por ejemplo, las clases efectúan el seguimiento y el desencadenamiento de eventos en este espacio de nombres. Para obtener más información, vea Solución de problemas y depuración en ASP.NET.

Espacio de nombres System.Management.Instrumentation

Proporciona las clases necesarias para que la instrumentación de aplicaciones exponga su información de administración y eventos mediante el Instrumental de administración de Windows (WMI) a los posibles consumidores. La supervisión del estado de ASP.NET utiliza WMI para proporcionar eventos. En sentido estricto, este espacio de nombres no se considera parte de la API de configuración.

Estructura de herencia de clases de configuración

El diagrama siguiente muestra las relaciones de herencia entre las clases en el espacio de nombres System.Web.Configuration y las clases en el espacio de nombres System.Configuration. Puede utilizar este diagrama para entender las propiedades y métodos que están disponibles para el objeto del que ha creado actualmente una instancia y para obtener más información.

Herencia de clases de configuración

Estructura de agregación de clases de configuración

El diagrama siguiente muestra las relaciones de herencia entre las clases en el espacio de nombres System.Web.Configuration y las clases en el espacio de nombres System.Configuration. Puede utilizar este diagrama para entender las clases de las que se crean instancias como objetos dentro de otras clases.

Diagrama de configuración de ASP.NET

Es posible que deba permitir a muchos administradores administrar recursos asignados, como sitios Web y aplicaciones específicos, a la vez que limitar las acciones que estos administradores puedan realizar en otros recursos. Puede desarrollar herramientas de administración que utilizan la API de configuración de ASP.NET para exponer sólo aquellas opciones de configuración que los administradores necesitan para realizar su trabajo, a la vez que se niega el acceso a otras opciones. Esto da autoridad a los administradores y ayuda a proteger los recursos eliminando la necesidad de un acceso directo a los archivos de configuración.

Herramientas para varios servidores

Si administra muchos servidores, es posible que necesite implementar y administrar las mismas aplicaciones ASP.NET en cada servidor. Por ejemplo, la administración de una granja de servidores web puede implicar las tareas siguientes:

  • Escribir un script que configure la misma aplicación ASP.NET en cualquiera o en todos los servidores de la granja de servidores web.

  • Bloquear algunos de los archivos que se utilizan para cada instancia de la aplicación.

  • Automatizar una auditoría que registra configuraciones de aplicaciones implementadas para garantizar que la instalación se configura de la misma manera en cada equipo.

  • Editar un cambio en la configuración una vez y aplicar a continuación el cambio a todas las instancias de la aplicación, dondequiera que estén instaladas.

Además, la API de configuración de ASP.NET admite la ejecución por lotes en varios servidores.

Crear y administrar la configuración con una herramienta

Como propietario del sitio, puede utilizar el complemento MMC de ASP.NET MMC para crear y administrar configuraciones de aplicaciones ASP.NET en un equipo. El complemento MMC de ASP.NET expone la funcionalidad de la API de configuración de ASP.NET mediante una interfaz de usuario gráfica. El complemento MMC de ASP.NET proporciona una vista unificada de opciones de configuración de varios archivos de configuración, como sesión, seguridad, errores y traza. Puede cambiar la configuración sin editar directamente el XML en los archivos de configuración. Para obtener más información, vea complemento MMC para ASP.NET.

¿Le ha resultado útil?
(Caracteres restantes: 1500)
Contenido de la comunidad Agregar