2008-09-26 16 views
7

Mi situación ideal para iniciar sesión en nuestro servicio web sería registrar todas las llamadas a métodos (autenticación y acceso a datos) con los parámetros que se les pasaron, así como los errores que pudieron haber ocurrido y tener los vincula con un único ID que los asocia con la misma llamada. Además, idealmente me gustaría poder controlar si se registran todos los parámetros o si solo se registra la llamada al método. Me gustaría poder controlar si se registran todos los inicios de sesión o solo los que fallaron. Una vez más, toda la información recuperada en una única solicitud se vinculará a través de una identificación (guía o de otro tipo)..Net Web Service Logging

Esta es mi situación de registro ideal. Si alguien sabe cómo implementar todo esto y estaría dispuesto a mudarse al área de Manchester, NH ...;)

Pero en serio, ¿alguien sabe cómo me gustaría vincular una solicitud de servicio web recibida a un error, o llamada al método? Mis intentos iniciales implican meterse en una extensión de jabón, tratando de agregar un encabezado (soap o html) y lo que no debe pasar un valor arbitrario de la extensión en el servicio en sí. Todos mis intentos no han tenido éxito.

Nuestra situación actual de registro tiene el registro de autenticación en una tabla, el método/las llamadas comerciales a otra tabla, y el registro de excepciones en otra tabla, sin interconexión entre ellas. Las marcas de tiempo son útiles, a veces, pero no son lo suficientemente confiables para una depuración efectiva. Actualmente estamos en .Net 2.0 con el potencial de utilizar 3.5 para finales de año, por lo que sería más útil si las respuestas se mantuvieran en la funcionalidad 2.0.

¿Alguien tiene alguna idea?

+0

... además de la solución de Noel, también tuve que actualizar los permisos para la carpeta de registro, cambiándolos a "Control total". –

Respuesta

11

uso WCF si es posible e implementar el registro de mensajes ver http://msdn.microsoft.com/en-us/library/ms730064.aspx

<system.diagnostics> 
    <sources> 
     <source name="System.ServiceModel.MessageLogging"> 
     <listeners> 
       <add name="messages" 
       type="System.Diagnostics.XmlWriterTraceListener" 
       initializeData="c:\logs\messages.svclog" /> 
      </listeners> 
     </source> 
    </sources> 
</system.diagnostics> 

<system.serviceModel> 
    <diagnostics> 
    <messageLogging 
     logEntireMessage="true" 
     logMalformedMessages="false" 
     logMessagesAtServiceLevel="true" 
     logMessagesAtTransportLevel="false" 
     maxMessagesToLog="3000" 
     maxSizeOfMessageToLog="2000"/> 
    </diagnostics> 
</system.serviceModel> 
+1

Probablemente desee utilizar el programa SvcTraceViewer para analizar el resultado. (http://msdn.microsoft.com/en-us/library/ms732023.aspx#sectionSection1) – Henrik