Cómo Crear un SharePoint Web Part con BotDetect CAPTCHA

Este artículo describe los pasos para crear un SharePoint Web Part usando el Lanapsoft BotDetect CAPTCHA control. Es una WebPart muy simple que le permite validar entrada de usuario, comparándola con el código mostrado en la imagen CAPTCHA.

Prerequisitos

  • Microsoft Visual Studio 2005
  • Microsoft Windows SharePoint Services
  • BotDetect ASP.NET CAPTCHA v2.0.11 o más nuevo - si usted todavia no lo tiene, puede descargar la versión de gratuita

En este artículo asumimos que usted está corriendo Visual Studio 2005 en un servidor corriendo WSS (Windows SharePoint Services) o MOSS (Microsoft Office SharePoint Server) 2007.

Comience bajando el proyecto de ejemplo de SharePoint CAPTCHA Web Part. Si desea utilizar este ejemplo de Web Pard a su sitio SharePoint directamente, sólo debe seguir los pasos 9-12.

Entre los pasos 1-8 se describe como el proyecto de Web Part fue creado, y puede seguirlos si desea crear su propio Web Part CAPTCHA Web Part — y hacer cualquier cambio de código que requiera.

Paso 1: Crear un nuevo proyecto de WebPart Library

Si está usando Visual Studio 2008:

  1. En el menú de Archivo, haga clic en Nuevo Proyecto
  2. En "Nuevo Proyecto", haga clic en Visual C#, luego "Sitio Web" y finalmente "ASP.NET Server Control"
  3. Digite "LanapWebPart" como el nombre y especifique un lugar para los archivos del proyecto, luego haga click en OK

Si está usando Visual Studio 2005:

  1. En el menú de Archivo, apunte a Nuevo, y luego haga click en Proyectos
  2. En el cuadro de diálogo " Nuevo Proyecto ", haga click en Proyectos Visual C#, y luego seleccione plantilla Web Control Library (Librería de Control Web)
  3. Digite "LanapWebPart" como el nombre y especifique un lugar para los archivos del proyecto, luego haga click en OK

Para crear una WebPart, tiene que agregar una referencia a los ensambles Microsoft.SharePoint, System.XML y Lanap.BotDetect.

Si decea referencia el control BotDetect Captcha desde un sitio anónimo de SharePoint desde la carpeta Bin, la cuenta de IIS para acceso anónimo (IUSR_<SERVER_NAME>) debe tener permisos de Lectura al archivo Lanap.BotDetect.dll. Alternativamente, puede referenciar Lanap.BotDetect.dll desde GAC.

Paso 2: Configuraciones Iniciales del Proyecto

Antes de que comience a trabajar con el código para WebPart, primero debe hacer los siguientes cambios a la configuración de su proyecto:

  • Configure el número de la versión
  • Haga un nombre-fuerte para el ensamble

Para configurar el número de versión:

  1. En el explorador de soluciones (Solution Explorer), haga doble-click en AssemblyInfo.cs.
  2. Edite la siguiente línea:
    [assembly: AssemblyVersion("1.0.*")]
    para que diga:
    [assembly: AssemblyVersion ("1.0.0.0")]

Para darle un nombre-fuerte al ensamble:

  1. Click derecho en el nombre de su proyecto y seleccione propiedades
  2. Escoja la pestaña de Signing (Firma)
  3. Chequee la opción de " Sing the assembly" (Firme el ensamble)
  4. En "Choose a strong name key file" (escoja un nombre fuerte en el archivo llave) escoja "<New...>"(nuevo)
  5. En nuevo diálogo escriba el nombre de algún archivo y opcionalmente una contraseña
  6. Guarde la configuración del proyecto

Paso 3: Agregando directivas de nombres

  • Agregue lo siguiente usando directivas que se encuentran cerca del comienzo de su código:
    usando Microsoft.SharePoint.WebPartPages;
    using System.Xml.Serialization;
    using System.Web.UI.HtmlControls;
    using Lanap.BotDetect;

Paso 4: Defininendo datos de Toolbox (Barra de herramientas)

  • Reemplace la siguiente línea:
    [ToolboxData("<{0}:WebCustomControl1 runat=server></{0}:WebCustomControl1>")]
    con esta línea:
    [ToolboxData("<{0}:LanapSimpleWebPart runat=server></{0}:SimpleWebPart>")]

Paso 5: Heredando desde la clase base WebPart

  • Reemplace esta línea de código:
    public class WebCustomControl1 : WebControl
    por
    public class LanapSimpleWebPart : WebPart

Paso 6: Definiendo un nombre XML para la clase WebPart entera

  • Agregar esta línea de código sobre la declaración para su clase WebPart:
    [XmlRoot(Namespace="LanapWebPart")]

Paso 7: Definiendo la Lógica y Renderizado para su WebPart

  • Después de que complete los pasos previos, puede definir la lógica y el renderizado para su WebPart. Vamos a agregar un objeto Lanap.BotDetect.Captcha (mostrando la imagen CAPTCHA), una TextBox (Cuadro de texto, introduciendo el código CAPTCHA), un Button (botón,invocando la validación CAPTCHA ), y una Label (etiqueta, mostrando el resultado de la validación CAPTCHA).
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Text;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    using Microsoft.SharePoint.WebPartPages;
    using System.Xml.Serialization;
    using System.Web.UI.HtmlControls;
    using Lanap.BotDetect;
    
    namespace LanapWebPart
    {
      [XmlRoot(Namespace = "LanapWebPart")]
      [ToolboxData("<{0}:LanapSimpleWebPart runat=server>")]
      public class LanapSimpleWebPart : WebPart
      {
        private TextBox _inputText;
        private Button _submitButton;
        private Label _messageLabel;
        private Lanap.BotDetect.Captcha _captchaControl;
    
        protected override void CreateChildControls()
        {
          base.CreateChildControls();
    
          _captchaControl = new Lanap.BotDetect.Captcha();
          _captchaControl.ID = "LanapCaptcha";
    
          _inputText = new TextBox();
          _inputText.ID = "InputText";
    
          _submitButton = new Button();
          _submitButton.ID = "SubmitButton";
          _submitButton.Text = "Validate";
    			
          _submitButton.Click +=
            new EventHandler(submitButton_Click);
    
          _messageLabel = new Label();
          _messageLabel.ID = "MessageLabel";
    
          this.Controls.Add(_captchaControl);
          this.Controls.Add(_inputText);
          this.Controls.Add(_submitButton);
          this.Controls.Add(_messageLabel);
        }
    
        void submitButton_Click(object sender, EventArgs e)
        {
          string captchaText = 
            ((TextBox)Controls[1]).Text.Trim().ToUpper();
    				
          ((TextBox)Controls[1]).Text = null;
    
          if (_captchaControl.Validate(captchaText))
          {
            ((Label)Controls[3]).Text = "Success!";
          }
          else
          {
            ((Label)Controls[3]).Text = "Error!";
          }
        }
      }
    }

Paso 8: Crear un archivo de definición de WebPart (.dwp)

  • Un archivo de definición WebPart (.dwp) es un simple archivo XML que contiene configuraciones de propiedades para una única WebPart. Para importar su WebPart en una página WebPart, simplemente suba el archivo .dwp. Despues de subir la WebPart, puede mostrar la WebPart arrastrándola en una de las zonas de su página WebPart.

    Dos propiedades son requeridas en el archivo .dwp: Assembly(ensamble) y TypeName(Tipo de Nombre). Sin embargo, para mostrar un nombre y una descripción por defecto para la WebPart después de que sea importada, debería incluir también las propiedades Title(Título) y Description(Descripción). Si quiere establecer las propiedades de otras WebPart mientras se produce la importación, puede definirlas en un archivo .dwp. Un archivo .dwp adopta la siguiente forma:

    <?xml version="1.0"?>
    <WebPart xmlns="http://schemas.microsoft.com/WebPart/v2">
       <Assembly>AssemblyName(with no .dll extension),
          Version=VersionNumber, Culture=Culture,
          PublicKeyToken=PublicKeyToken</Assembly>
       <TypeName>WebPartNamespace.WebPartClassName</TypeName>
       <Title>DefaultWebPartTitle</Title>
       <Description>WebPartDescription</Description>
    </WebPart>

    Su archivo .dwp WebPart debería verse como esta:

    <?xml version="1.0"?>
    <WebPart xmlns="http://schemas.microsoft.com/WebPart/v2">
      <Assembly>LanapWebPart, Version=1.0.0.0, Culture=Neutral,
        PublicKeyToken=def148956c61a16b</Assembly>
      <TypeName>LanapWebPart.LanapSimpleWebPart</TypeName>
      <Title>Lanap Simple Web Part</Title>
      <Description>This web part shows Lanapsoft BotDetect
        Captcha image and validates user input</Description>
    </WebPart>

Paso 9: Registrando un ensamble WebPart como un SafeControl (control de seguridad)

  1. Abra el archivo web.config en su sitio SharePoint.
  2. Agregue las siguientes líneas en el bloque <SafeControls> :
    <SafeControl
        Assembly="LanapWebPart, Version=1.0.0.0, Culture=neutral,
        PublicKeyToken=82da7a1cd3cc100b"
      Namespace="LanapWebPart"
      TypeName="*"
      Safe="True"
    />
  3. Reemplace el valor de PublicKeyToken (82da7a1cd3cc100b) con el valor actual para su ensamble WebPart. Para determinar el valor correcto de PublicKeyToken para el atributo Ensamble de la etiqueta <SafeControl> de su WebPart, use el sn.exe utilidad de línea de comandos:
    sn.exe -T C:\inetpub\wwwroot\bin\SimpleWebPart.dll

Paso 10: Registre Http Handlers (Manipuladores Http)

  • Agregue las sigueintes línea a la sección <system.web> del archivo "Web.config" de SharePoint:
    <httpHandlers>
      <add verb="*" path="LanapCaptcha.ashx" 
        type="Lanap.BotDetect.CaptchaHandler, Lanap.BotDetect" />
    </httpHandlers>
  • O, si quiere cargar Lanap.BotDetect.dll desde GAC, modifique la declaración de los httpHandlers a:

    <add verb="*" path="LanapCaptcha.ashx" 
      type="Lanap.BotDetect.CaptchaHandler, Lanap.BotDetect, 
      Version=2.0.15.0, Culture=neutral, 
      PublicKeyToken=74616036388b765f"/> 
  • Añada las siguientes lineas a la sección <appSettings> del archivo "Web.config" del sitio SharePoint:
    <appSettings>
      <add key="LBD_RequestPath" value="LanapCaptcha.ashx" />
    </appSettings>
  • Modifique el elemento <sessionState> para incluir el atributo sessionIDManagerType:
    <sessionState mode="InProc" cookieless="AutoDetect" 
          timeout="20" sessionIDManagerType="
            Lanap.BotDetect.Persistence.CustomSessionIDManager, 
            Lanap.BotDetect" />
    Esto es requerido como es explicado para solucionar el problema del CAPTCHA con el audio en navegadores como IE 7.0 sobre Vista y para Google Chrome, como se detalla en las preguntas frequentes de BotDetect ASP.NET CAPTCHA.
  • Asegúrese de que el estado de sesión de ASP.NET está permitido en la sección <httpModules> del archivo web.config - revisando que el siguiente elemento no está comentado y exista:
    <httpModules>
      <add name="Session" 
        type="System.Web.SessionState.SessionStateModule" />
    </httpModules>
  • Asegúrese de que el estado de sesión de ASP.NET también está permitido en la sección <pages> del archivo web.config - revisando que el siguiente elemento no está comentado y exista - el atributo enableSessionState debe ser true:
    <pages enableSessionState="true" enableViewState="true" 
      enableViewStateMac="true" validateRequest="false" 
      pageParserFilterType="Microsoft.SharePoint.ApplicationRuntime.
        SPPageParserFilter, Microsoft.SharePoint, Version=12.0.0.0, 
        Culture=neutral, PublicKeyToken=71e9bce111e9429c" 
      asyncTimeout="7">

Paso 11: Despliegue su WebPart

  • Para desplegar su WebPart a un sitio SharePoint, copie el ensamble de su WebPart a la carpeta C:\inetpub\wwwroot\bin de su servidor SharePoint (o a la carpeta de caché del ensamble global en C:\windows\assembly)

Paso 11: Crear un archivo de definición de WebPart (.dwp)

  • Un archivo de definición WebPart (.dwp) es un simple archivo XML que contiene configuraciones de propiedades para una única WebPart. Para importar su WebPart en una página WebPart, simplemente suba el archivo .dwp. Despues de subir la WebPart, puede mostrar la WebPart arrastrándola en una de las zonas de su página WebPart.

    Dos propiedades son requeridas en el archivo .dwp: Assembly(ensamble) y TypeName(Tipo de Nombre). Sin embargo, para mostrar un nombre y una descripción por defecto para la WebPart después de que sea importada, debería incluir también las propiedades Title(Título) y Description(Descripción). Si quiere establecer las propiedades de otras WebPart mientras se produce la importación, puede definirlas en un archivo .dwp. Un archivo .dwp adopta la siguiente forma:

    <?xml version="1.0"?>
    <WebPart xmlns="http://schemas.microsoft.com/WebPart/v2">
       <Assembly>AssemblyName(with no .dll extension),
          Version=VersionNumber, Culture=Culture,
          PublicKeyToken=PublicKeyToken</Assembly>
       <TypeName>WebPartNamespace.WebPartClassName</TypeName>
       <Title>DefaultWebPartTitle</Title>
       <Description>WebPartDescription</Description>
    </WebPart>

    Su archivo .dwp WebPart debería verse como esta:

    <?xml version="1.0"?>
    <WebPart xmlns="http://schemas.microsoft.com/WebPart/v2">
      <Assembly>LanapWebPart, Version=1.0.0.0, Culture=Neutral,
        PublicKeyToken=def148956c61a16b</Assembly>
      <TypeName>LanapWebPart.LanapSimpleWebPart</TypeName>
      <Title>Lanap Simple Web Part</Title>
      <Description>This web part shows Lanapsoft BotDetect
        Captcha image and validates user input</Description>
    </WebPart>

Paso 12: Importando su WebPart en una página WebPart

Para usar y probar su WebPart, impórtela en una página WebPart en un servidor corriendo WSS (Windows SharePoint Services) o MOSS (Microsoft Office SharePoint Server) 2007.

  1. Abra una página WebPart en su servidor.
  2. Seleccione Editar Página(Editar Página) desde el menú Site Actions (Acciones del Sitio) en rincón derecho-arriba de la página, y haga click en Add a Web Part in one of the zones (Agregar una WebPart en una de las zonas).
  3. En el cuadro de diálogo Add WebParts (Agregar WebParts), haga click en Advanced WebPart gallery and options (Galería WebPart y opciones avanzadas) en el rincón abajo-derecha.
  4. En el panel Add WebParts (Agregar WebParts), haga click en Import (Importar).
  5. Explore hasta el lugar del archivo SimpleWebPart.dwp, y luego haga click en el botón Upload (Subir). Luego de subir, la página se refrescará, y "My Simple Web Part" (Mi simple WebPart) debería aparecer dejabo de Importe WebPart (WebPart importada).
  6. Arrastre el ícono que está después de " My Simple Web Part " a una zona en la página WebPart.
  7. Escriba texto en el cuadro de texto, y luego haga click en Set Web Part Title (Establecer el título de la WebPart).

Imagen de Cómo Crear un SharePoint Web Part con BotDetect CAPTCHA

Versiones Actuales de BotDetect

Advertencia

Esta página es una traducción no oficial de la página original: How To Create a SharePoint Web Part with BotDetect CAPTCHA y puede estar incompleta, incorrecta o poco actualizada.

Última traducción del 2009-12-18. Esto se aplica para los productos BotDetect ASP.NET CAPTCHA v2.0.15 y BotDetect ASP CAPTCHA v2.0.9.

language: English Español Tiếng Việt