Cómo Registrar errores internos de BotDetect ASP.NET 1.1 CAPTCHA

Desde la versión 2.0.3, BotDetect ASP.NET CAPTCHA es vendido con un utilitario para el registro de errores centralizado, no-intrusivo, sólo para BotDetect, altamente personalizable basado en el proyecto log4net. Esta página describe como usar este utilitario en sus proyectos.

Registro de errores BotDetect CAPTCHA a un archivo de texto

ATENCIÓN

Este ejemplo registra errores e intentos de validación en un archivo de texto dentro del sistema de archivos del servidor, así sólo funcionará en entornos correctamente preparados. Si necesita registrar errores en entornos en donde no tiene permisos de escritura, puede investigar otros métodos de log4net (como por ejemplo, registrar errores a una base de datos).

Instrucciones paso a paso

  • Encuentre la sub carpeta Troubleshooting en el directorio de instalación de BotDetect ASP.NET CAPTCHA (C:\Archivos de Programa\Lanapsoft\BotDetect 1.1 CAPTCHA\ASP.Net 1.1\Assembly\Troubleshooting por defecto)
  • Copie los archivos Lanap.BotDetect.Troubleshooting.dll y log4net.dll al directorio Bin de su aplicación
  • Cree un archivo de texto llamado error.txt en la misma carpeta en donde está el archivo web.config de su aplicación, asegúrese de que la cuenta de IIS cuenta con privilegios para modificarlo (Modify).
  • La cuenta de usuario utilizada depende de su versión de IIS y de la configuración. De forma predeterminada, estos serán:

    • IIS 5.0 o 5.1: ASPNET
    • IIS 6.0 o 7.0: NETWORK SERVICE
    • IIS 7.5: Será la cuenta ApplicationPoolIdentity de su aplicación (establecida según la "AppPool")

    Para establecer los permisos pertinentes, puede utilizar los siguientes comandos:

    cacls error.txt /G "ASPNET":C /E /C
    cacls error.txt /G "NETWORK SERVICE":C /E /C
    cacls error.txt /G "IIS AppPool\TODO:AppicationPoolName":C /E /C
  • Agregue las siguientes líneas al comienzo de la sección <configuration> en el archivo web.config de su aplicación:
    <configSections>
      <section name="log4net" 
        type="log4net.Config.Log4NetConfigurationSectionHandler, 
        log4net" />
    </configSections>
    
    <log4net>
    
      <!-- Define the output appenders -->
      <appender name="FileAppender" 
        type="log4net.Appender.FileAppender">
          <file value="log.txt" />
          <appendToFile value="true" />
          <lockingModel 
            type="log4net.Appender.FileAppender+MinimalLock" />
          <layout type="log4net.Layout.PatternLayout,log4net">
            <conversionPattern value="%date [%thread] %type - 
              %n%n%message%n%n" />
          </layout>
      </appender>
    	
      <!-- Setup the root category, add the appenders and set the default priority -->
      <logger name="ErrorLogger">
        <level value="ERROR" />
        <appender-ref ref="FileAppender" />
      </logger>
    </log4net>
        

    Esto registrará una sección de configuración personalizada log4net, y lo leerá desde el archivo log4net.config que fue copiado más arriba.

  • Agregue las siguientes líneas al comienzo de la sección <system.web>, justo arriba del elemento <httpHandlers>:
    <httpModules> 
      <add type="
        Lanap.BotDetect.Solución de problemas.ErrorTrackingModule, 
          Lanap.BotDetect.Solución de problemas" 
        name="ErrorTrackingModule" />
    </httpModules>

    Esto registrará el HttpModule (Módulo Http) de seguimiento de errores.

Explicación

El ensamble Lanap.BotDetect.Solución de problemas.dll contiene un HttpModule especial (llamado ErrorTrackingModule), que maneja el evento Application_OnError, para errores que se originan sólo en el código interno de BotDetect. Todos los demás errores son ignorados, y puede manejarlos de cualquier manera que se adapte a las necesidades de su aplicación.

Proyectos de Ejemplo

El método descrito en las secciones previas es implementado en ejemplo de solución de problemas que viene con BotDetect, asi que puede chequear (C# o VB.NET) su código fuente para detalles futuros y ejemplos de archivos web.config.

Usando el módulo de Solución de Problemas (Solución de problemas) en servidores de Producción

  • El módulo de Solución de Problemas que viene con BotDetect solo maneja errores que ocurren en el código interno de BotDetect, y no debería (como principio) impactar significativamente el desempeño de su aplicación.
  • Sin embargo, esto puede que varíe dependiendo en la carga de su servidor y la configuración que éste tenga; si cree que está ralentizando su aplicación, puede simplemente desactivarlo mediante la eliminación del elemento ya mencionado <httpModules> de su archivo web.config.

Diagnosticando y reportando el problema

  • El archivo log.txt (en la misma carpeta que su archivo web.config) contiene detalles sobre todos los errores internos de BotDetect, y si nos lo envía, podemos ayudarlo a depurar el problema y determinar la causa exacta del error.
  • Si este archivo está vacío y aún así experimenta dificultades, intente reproducir el problema usando uno de los ejemplos que vienen con las instalaciones BotDetect en lugar del código de su aplicación. Intente cambiar el código para que sea más parecido al código que está utilizando - ¿ el problema comienza a ocurrir después de un cambio particular?
  • Si el problema ocurre sólo en su aplicación y nunca cuando usa ejemplos, probablemente hay un error en su código, existe un " Cómo Usar BotDetect CAPTCHA", y debería revisarlo con cuidado.

Configuración avanzada de registro y licencia log4net

Cómo ErrorTrackingModule (Módulo de Seguimiento de Errores) usa el registrador de código abierto log4net (http://logging.apache.org/log4net/), puede personalizar el método exacto de registro de errores que mejor se adapte a sus necesidades específicas: puede escribir registros a un archivo de texto, o una base de datos, o a la consola etc.

Hay muchas opciones diferentes y configuraciones que puede utilizar, y lo alentamos a que aprenda más sobre éstas en el manual de log4net en http://logging.apache.org/log4net/release/manual/introduction.html.

La licencia de log4net puede encontrarse en http://logging.apache.org/log4net/license.html, así como también en la sub-carpeta Assembly\Solución de problemas del directorio de instalación de BotDetect ASP.NET CAPTCHA (los archivos log4net license.txt y log4net notice.txt).

Formato del registro de errores BotDetect CAPTCHA

Cada registro de errores contiene la siguiente información:

  • La fecha y la hora cuando ocurrió el error
  • Un detallado seguimiento de la pila del error y todas las excepciones interiores
  • Los contenidos del estado de Sesión relevantes a la funcionalidad de BotDetect CAPTCHA:

    • La ID de la Sesión
    • Valores de todas las llaves de Estados de Sesión generados por BotDetect
    • La colección de códigos activos para la Sesión actual
    • El tiempo de generación, contenidos y uso de seguimiento de cada código activo
  • El agente de la cadena en bruto del explorador del cliente

Ejemplo del registro de errores de BotDetect CAPTCHA

2007-02-06 16:55:45,125 [4244] 
  Lanap.BotDetect.Solución de problemas.ErrorLogger - 

Lanap.BotDetect.CaptchaGenerationException: 
  An error occured in the BotDetect control internal code. - 
  Captcha binary data generation failed. - Check inner 
  expection for details. ---> 
  System.NullReferenceException: 
  Object reference not set to an instance of an object.
	
  at System.Drawing.Drawing2D.GraphicsPath.AddString(String s, 
    FontFamily family, Int32 style, Single emSize, 
    Point origin, StringFormat format)

  at Lanap.BotDetect.CurvedText.TextEffect(Graphics g, 
    String strText, Font font, Brush brush, Pen pen) 
  in C:\Projects\BotDetect\Component\DotNet 1.1\SourceCode\
      Component\BotDetectControl\CaptchaCore\CaptchaImage\
      Support\CurvedText.cs:line 174
  
  at Lanap.BotDetect.CurvedText.DrawText(RectangleF rect, 
    Graphics g, Font font, String strText, Brush brush, 
    Pen pen) 
  in C:\Projects\BotDetect\Component\DotNet 1.1\SourceCode\
    Component\BotDetectControl\CaptchaCore\CaptchaImage\
    Support\CurvedText.cs:line 28

  at Lanap.BotDetect.ChalkboardTextGenerator.DrawText(
    String text, Bitmap textDestination, Color 
    backgroundColor) 
  in C:\Projects\BotDetect\Component\DotNet 1.1\SourceCode\
    Component\BotDetectControl\CaptchaCore\CaptchaImage\
    TextGenerator\Generators\ChalkboardTextGenerator.cs:
    line 45

  at Lanap.BotDetect.ImageGenerator.GenerateImage(
    String textToRender, TextStyleEnum textStyle, 
    Color backgroundColor) 
  in C:\Projects\BotDetect\Component\
    DotNet 1.1\SourceCode\Component\BotDetectControl\
    CaptchaCore\CaptchaImage\ImageGenerator.cs:line 31
  
  at Lanap.BotDetect.ImageGenerator..ctor(String textToRender, 
    TextStyleEnum textStyle, Size size, Color backgroundColor) 
  in C:\Projects\BotDetect\Component\DotNet 1.1\SourceCode\
    Component\BotDetectControl\CaptchaCore\CaptchaImage\
    ImageGenerator.cs:line 25
   
  at Lanap.BotDetect.CaptchaCore.GenerateImage(String code, 
    TextStyleEnum textStyle, Size imageSize, 
      ImageFormatEnum imageFormat, Color backgroundColor) 
  in C:\Projects\BotDetect\Component\DotNet 1.1\SourceCode\
    Component\BotDetectControl\CaptchaCore\CaptchaCore.cs:
    line 185

  at Lanap.BotDetect.CaptchaHandler.DrawImage(HttpContext 
    context) 
  in c:\projects\botdetect\component\dotnet 1.1\sourcecode\
    component\botdetectcontrol\httphandler\captchahandler.cs
    :line 83
  
  --- End of inner exception stack trace ---
   
  at Lanap.BotDetect.CaptchaHandler.DrawImage(HttpContext 
    context) 
  in c:\projects\botdetect\component\dotnet 1.1\sourcecode\
    component\botdetectcontrol\httphandler\captchahandler.cs:
    line 101
  
  at Lanap.BotDetect.CaptchaHandler.ProcessRequest(HttpContext 
    context) 
  in c:\projects\botdetect\component\dotnet 1.1\sourcecode\
    component\botdetectcontrol\httphandler\captchahandler.cs:
    line 30
  
  at System.Web.CallHandlerExecutionStep.System.Web.
    HttpApplication+IExecutionStep.Execute()
   
  at System.Web.HttpApplication.ExecuteStep(IExecutionStep 
    step, Boolean& completedSynchronously), 

SESSION

ID : z4zeiu45wxykdm45pfj1ha45

LBD_CaptchaCodeCollection__csharpbotdetecttroubleshootingdemo_
  default_samplecaptcha : 

CODE COLLECTION

37774465 : CAPTCHA CODE

code : B4QKK
generated at : 6.2.2007 16:55:45
image requested: True
sound requested: False
, 

BROWSER

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 
  Avant Browser; Avant Browser; InfoPath.1; .NET CLR 1.1.4322;
  .NET CLR 2.0.50727)

Versiones Actuales de BotDetect

Advertencia

Esta página es una traducción no oficial de la página original: How To Log Internal BotDetect CAPTCHA Errors with ASP.NET 1.1 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