Procedimiento para crear una característica para registrar una regla de mantenimiento
Última modificación: miércoles, 23 de septiembre de 2009
Hace referencia a: SharePoint Foundation 2010
Para instalar una nueva regla de mantenimiento, debe registrarse con el Analizador de mantenimiento de SharePoint. Para hacerlo, primero debe colocar el ensamblado que contiene la regla en la memoria caché global de ensamblados (GAC) en todos los equipos y, a continuación, llamar al método RegisterRules(Assembly) de la clase SPHealthAnalyzer.
Cuando trabaja en el entorno de desarrollo, puede usar la herramienta de caché global de ensamblados (Gacutil.exe) para colocar el ensamblado en la GAC y, a continuación, escribir código personalizado para cargar el ensamblado y registrar la regla. En un entorno de producción, debería usar un procedimiento más robusto. En este caso, es probable que otra persona instale la regla, como un administrador del conjunto o granja de servidores, y es muy posible que la instale en varios servidores, no solo en el servidor que usa para desarrollo.
La mejor manera para registrar una regla con el Analizador de mantenimiento de SharePoint en un entorno de producción es crear una característica de SharePoint para este propósito. La clave para esta técnica es incluir, como parte del ensamblado de la regla, controladores de eventos para los eventos FeatureActivated y FeatureDeactivating. Cuando un administrador de la granja de servidores instala la característica, los controladores de eventos se registran en el sistema. Cuando un administrador de la granja de servidores activa la característica, el código del controlador de eventos FeatureActivated puede llamar al método RegisterRules(Assembly) para registrar la regla. Cuando un administrador de la granja de servidores desactiva la característica, el código del controlador de eventos FeatureDeactivating puede llamar al método UnregisterRules(Assembly) para quitar la regla.
En este tema se explica cómo crear controladores de eventos para registrar y anular el registro de una regla, y cómo incluir controladores de eventos y el ensamblado de la regla en una característica de nivel de granja de servidores. Para obtener más información sobre la implementación de la característica y la instalación del ensamblado de la regla en la GAC, vea Procedimiento para implementar una regla de mantenimiento con un paquete de solución.
Para crear controladores de eventos que registren y anulen el registro de una regla de mantenimiento
Abra Visual Studio como administrador haciendo clic con el botón secundario en el programa en el menú Inicio y seleccione Ejecutar como administrador.
Abra el proyecto que contiene el código para la regla de mantenimiento.
Agregue una nueva clase al proyecto.
En el Explorador de soluciones, seleccione el nombre del proyecto, elija Agregar y, a continuación, Nuevo elemento…. En el cuadro de diálogo Agregar nuevo elemento, elija la plantilla Clase. Nombre la clase como RuleFeatureReceiver. A continuación, haga clic en Agregar.
Agregue instrucciones using (Imports en Visual Basic) para los espacios de nombres que se muestran en el siguiente ejemplo.
using System; using System.Collections.Generic; using System.Reflection; using Microsoft.SharePoint; using Microsoft.SharePoint.Administration.Health;
Imports System Imports System.Collections.Generic Imports System.Reflection Imports Microsoft.SharePoint Imports Microsoft.SharePoint.Administration.Health
Modifique la declaración de clase para que la clase herede de la clase SPFeatureReceiver.
class RuleFeatureReceiver : SPFeatureReceiver
Public Class RuleFeatureReceiver Inherits SPFeatureReceiver
Invalide e implemente el método FeatureActivated(SPFeatureReceiverProperties), como se muestra en el siguiente ejemplo.
public override void FeatureActivated(SPFeatureReceiverProperties properties) { Assembly a = Assembly.GetExecutingAssembly(); IDictionary<Type, Exception> exceptions = SPHealthAnalyzer.RegisterRules(a); if (exceptions != null) { string logEntry = a.FullName; if (exceptions.Count == 0) { logEntry += " All rules were registered."; } else { foreach (KeyValuePair<Type, Exception> pair in exceptions) { logEntry += string.Format(" Registration failed for type {0}. {1}", pair.Key, pair.Value.Message); } } System.Diagnostics.Trace.WriteLine(logEntry); } }
Public Overrides Sub FeatureActivated(ByVal properties As Microsoft.SharePoint.SPFeatureReceiverProperties) Dim a As Assembly = Assembly.GetExecutingAssembly() Dim exceptions As IDictionary(Of Type, Exception) = SPHealthAnalyzer.RegisterRules(a) If Not exceptions Is Nothing Then Dim logEntry As String = a.FullName If exceptions.Count = 0 Then logEntry += " All rules were registered." Else Dim pair As KeyValuePair(Of Type, Exception) For Each pair In exceptions logEntry += String.Format(" Registration failed for type {0}. {1}", _ pair.Key, pair.Value.Message) Next End If System.Diagnostics.Trace.WriteLine(logEntry) End If End Sub
Invalide e implemente el método FeatureDeactivating(SPFeatureReceiverProperties), como se muestra en el siguiente ejemplo.
public override void FeatureDeactivating(SPFeatureReceiverProperties properties) { Assembly a = Assembly.GetExecutingAssembly(); IDictionary<Type, Exception> exceptions = SPHealthAnalyzer.UnregisterRules(a); if (exceptions != null) { string logEntry = a.FullName; if (exceptions.Count == 0) { logEntry += " All rules were unregistered."; } else { foreach (KeyValuePair<Type, Exception> pair in exceptions) { logEntry += string.Format(" Unregistration failed for type {0}. {1}", pair.Key, pair.Value.Message); } } System.Diagnostics.Trace.WriteLine(logEntry); } }
Public Overrides Sub FeatureDeactivating(ByVal properties As Microsoft.SharePoint.SPFeatureReceiverProperties) Dim a As Assembly = Assembly.GetExecutingAssembly() Dim exceptions As IDictionary(Of Type, Exception) = SPHealthAnalyzer.UnregisterRules(a) If Not exceptions Is Nothing Then Dim logEntry As String = a.FullName If exceptions.Count = 0 Then logEntry += " All rules were unregistered." Else Dim pair As KeyValuePair(Of Type, Exception) For Each pair In exceptions logEntry += String.Format(" Unregistration failed for type {0}. {1}", _ pair.Key, pair.Value.Message) Next End If System.Diagnostics.Trace.WriteLine(logEntry) End If End Sub
Genere el proyecto.
Para crear una característica que instale una regla de mantenimiento
Cree una carpeta de características.
En el Explorador de soluciones, haga clic con el botón secundario en el nombre del proyecto, seleccione Agregar y, a continuación, seleccione Nueva carpeta. Escriba Features.
Cree una subcarpeta para la característica.
Haga clic con el botón secundario en la carpeta Features, seleccione Agregar y, a continuación, seleccione Nueva carpeta. Escriba el nombre de la característica (por ejemplo, NombreDeEmpresa.ReglasDeMantenimiento).
Más adelante, cuando cree un paquete de solución para implementar una característica, se creará una carpeta con el mismo nombre en la carpeta %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\FEATURES de todos los servidores de la granja de servidores. El nombre que le asigna a la carpeta puede ayudar a los administradores a encontrar el archivo de definición de la característica.
Cree un archivo de definición de característica.
Haga clic con el botón secundario en la subcarpeta de la característica, seleccione Agregar y, a continuación, elija Nuevo elemento.... En el cuadro de diálogo Agregar nuevo elemento, seleccione la plantilla Archivo XML. Asigne el nombre Feature.xml al archivo. A continuación, haga clic en Agregar.
Abra el archivo Feature.xml en el editor.
Elimine la primera (y única) línea del archivo. En su lugar, pegue el siguiente código.
<Feature xmlns="https://schemas.microsoft.com/sharepoint/" Scope="Farm" Hidden="FALSE" Title="Your Title" Description="Your description" Id="00000000-0000-0000-0000-000000000000" ReceiverAssembly="<assembly name>, Version=<number>, Culture=<culture>, PublicKeyToken=<token>" ReceiverClass="MyNamespace.RuleFeatureReceiver" AlwaysForceInstall="TRUE" ImageUrl=""/>
En Feature.xml, reemplace los valores de los atributos Title y Description con su propio texto.
Reemplace el valor del atributo Id con un GUID generado recientemente (sin llaves).
Puede usar la herramienta GuidGen (guidgen.exe) para obtener un nuevo GUID. En el menú Herramientas de Visual Studio, elija Crear GUID. En el cuadro de diálogo Crear GUID, seleccione Formato del Registro y, a continuación, haga clic en Copiar. Pegue el contenido del portapapeles entre comillas después del identificador de atributo. Quite las llaves del GUID.
Reemplace el valor del atributo ReceiverAssembly con el nombre de cuatro partes completo del ensamblado.
Para obtener más información sobre cómo obtener el nombre completo del ensamblado, vea Procedimiento para crear una herramienta para obtener el nombre completo de un ensamblado.
Reemplace el valor del atributo ReceiverClass con el nombre calificado de espacio de nombres de la subclase SPFeatureReceiver.
Guarde el archivo.
Para obtener más información sobre cómo implementar la característica, vea Procedimiento para implementar una regla de mantenimiento con un paquete de solución.
Vea también
Tareas
Procedimiento para implementar una regla de mantenimiento con un paquete de solución
Procedimiento para crear una herramienta para obtener el nombre completo de un ensamblado