Procedimiento para crear y registrar o cancelar el registro de un clasificador de solicitudes
Última modificación: jueves, 03 de marzo de 2011
Hace referencia a: SharePoint Foundation 2010
En este tema se explica cómo registrar y cancelar el registro de un clasificador de solicitudes HTTP con la supervisión de rendimiento de Microsoft SharePoint Foundation y el sistema de limitación de solicitudes HTTP.
Importante |
---|
En el ejemplo que se ejecuta en este tema se usa una aplicación de consola. Independientemente del tipo de proyecto, es importante establecer la CPU y el .NET Framework de destino correctos. El proyecto debe tener como destino Microsoft .NET Framework 3.5 (no Microsoft .NET Framework 4). La CPU de destino debe ser cualquier CPU o x64. Para obtener información sobre esta elección, vea Procedimiento para establecer el marco de destino y CPU correctos. La CPU de destino es generalmente x86 de forma predeterminada. Para cambiarla, haga clic con el botón secundario en el nombre del proyecto en el Explorador de soluciones y seleccione Propiedades. Puede cambiar la CPU en la ficha Generar mediante la lista desplegable Destino de la plataforma. |
Persistencia de los clasificadores de solicitudes HTTP
Los clasificadores de solicitudes HTTP del sistema de limitación de solicitudes HTTP persisten en la base de datos de configuración del conjunto o granja de servidores de SharePoint Foundation como objetos de una clase derivada de la clase SPRequestThrottleClassifier. Estos objetos son los elementos de una colección de solo lectura almacenada como la propiedad ThrottleClassifiers del objeto SPHttpThrottleSettings que, a su vez, persiste en la propiedad HttpThrottleSettings de la aplicación web.
Para crear la solución de Visual Studio
Cree un proyecto de aplicación de consola en Microsoft Visual Studio y establezca la plataforma de CPU y .NET Framework de destino.
Agregue una referencia al Microsoft.SharePoint.dll del proyecto. Se encuentra en %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\ISAPI.
Abra el archivo program.cs, establezca un nombre de clase y un espacio de nombres adecuados y agregue instrucciones using para los espacios de nombres Microsoft.SharePoint, Microsoft.SharePoint.Administration y Microsoft.SharePoint.Utilities. El código debe tener ahora un aspecto como el siguiente.
using System; using Microsoft.SharePoint; using Microsoft.SharePoint.Administration; using Microsoft.SharePoint.Utilities; namespace Contoso.SharePoint.Utilities { class RequestClassifierRegistrar { static void Main(string[] args) { } // end Main } }
Para crear y registrar un clasificador de solicitudes
En el método Main, obtenga una referencia a la aplicación web y, posteriormente, a la configuración de limitación mediante una llamada al método GetHttpThrottleSettings(SPPersistedObject), tal y como se muestra en el siguiente ejemplo.
Uri webApplicationUri = new Uri("Http://localhost/"); SPWebApplication webApplication = SPWebApplication.Lookup(webApplicationUri); SPHttpThrottleSettings throttleSettings = SPHttpThrottleSettings.GetHttpThrottleSettings(webApplication);
Aún en el método Main, llame a un constructor para una de las clases que derivan de la clase SPRequestThrottleClassifier. En este ejemplo, se usa la clase SPHttpFileExtensionThrottleClassifier. Los objetos de esta clase clasifican las solicitudes de acuerdo con la extensión de nombre de archivo del recurso solicitado. El constructor de la clase toma un parámetro String, en el que se designa la extensión de nombre de archivo (incluido el carácter de interlineado ".") y un parámetro SPRequestThrottleLevel, que especifica las condiciones en las que se limitan las solicitudes de recursos con la extensión de nombre de archivo especificada. En este ejemplo, se especifica que las solicitudes de archivos ".docx" deben bloquearse cada vez que el proceso de trabajo que atiende la solicitud está en el modo de limitación de FirstStage.
SPHttpFileExtensionThrottleClassifier docxClassifier = new SPHttpFileExtensionThrottleClassifier(".docx",SPRequestThrottleLevel.FirstStage);
Aún en el método Main, llame al método AddThrottleClassifier(SPRequestThrottleClassifier), pasando el nuevo clasificador como parámetro.
throttleSettings.AddThrottleClassifier(docxClassifier);
Sugerencia AddThrottleClassifier(SPRequestThrottleClassifier) produce una ArgumentException si ya existe un clasificador para la misma extensión y nivel de limitación. Considere la posibilidad de que el código busque un clasificador idéntico antes de llamar a AddThrottleClassifier(SPRequestThrottleClassifier).
Nota
Si hay más de un clasificador para la misma extensión de nombre de archivo, lo que solo es posible si tienen diferentes niveles de limitación, el clasificador con el nivel de limitación más estricto será el clasificador efectivo. Por ejemplo, si un clasificador para recursos .svc especifica un nivel de limitación de FirstStage y otro clasificador para recursos .svc especifica SecondStage, las solicitudes coincidentes se limitarán en la primera fase. En consecuencia, no tiene sentido tener más de un clasificador para una misma extensión.
En el modelo de objetos hay otras tres clases que derivan de la clase SPRequestThrottleClassifier. Vea Limitación de solicitudes para obtener detalles. Debido a que estas clases usan características de solicitudes HTTP distintas de la extensión de nombre de archivo del recurso, es posible que una determinada solicitud coincida con más de un clasificador. En este caso, la solicitud se limitará o no de acuerdo con el clasificador más estricto. Por ejemplo, si la solicitud coincide con un clasificador con un nivel de limitación de FirstStage y también coincide con un clasificador con un nivel de limitación de SecondStage, la solicitud se bloqueará si el proceso de trabajo se encuentra en la primera fase del modo de limitación.
Para cancelar el registro de un clasificador de solicitudes
El procedimiento de anulación del registro de un clasificador de solicitudes es similar al procedimiento de registro, salvo que el código llama al método RemoveThrottleClassifierAt(Int32), pasando el índice de base cero del clasificador de la colección ThrottleClassifiers de la propiedad HttpThrottleSettings de la aplicación web. En el ejemplo siguiente, el código quita el último clasificador.
Uri webApplicationUri = new Uri("Http://localhost/"); SPWebApplication webApplication = SPWebApplication.Lookup(webApplicationUri); SPHttpThrottleSettings throttleSettings = SPHttpThrottleSettings.GetHttpThrottleSettings(webApplication); throttleSettings.RemoveThrottleClassifierAt(throttleSettings.ThrottleClassifiers.Count - 1);