2010-05-17 7 views
11

aquí está mi web.config, ejecutando un servicio WCF en una aplicación en IIS7, pero no se está escribiendo nada en el archivo especificado. el permiso en el archivo ha sido otorgado para todos.wcf tratando de configurar el rastreo para depurar, no escribiendo en el archivo de registro

<system.diagnostics> 
    <sources> 
    <source name="System.ServiceModel" switchValue="Information, ActivityTracing,  error, warning, critical" propagateActivity="true"> 
    <listeners> 
    <add name="traceListener" 
    type="System.Diagnostics.TextWriterTraceListener" 
    initializeData="c:\log\tracestext.log" /> 

    </listeners> 
    </source> 
    </sources> 
</system.diagnostics> 

Puedo agregar una referencia de servicio muy bien.
Intento llamar al servicio desde una aplicación de Windows y, después de unos minutos, aparece un error en la máquina que ejecuta la aplicación de Windows "El cliente no puede finalizar la negociación de seguridad dentro del tiempo de espera configurado (00:00:00) La etapa de negociación actual es 1 (00:00:00). "

pero no se escribe absolutamente nada en el archivo de registro de seguimiento especificado en la configuración.

¿Hay algo más que deba hacer para habilitar el seguimiento? Gracias por su ayuda

EDIT: la sección "fuentes" ahora coincide con la sección recomienda aquí: "messagelogging diagnóstico" http://msdn.microsoft.com/en-us/library/aa702726.aspx

He añadido los de la sección "System.ServiceModel"

y el evento visor muestra: "registro de mensajes se ha convertido en la información sensible se puede registrar en la clara, incluso si se ha cifrado en el alambre:. por ejemplo, los cuerpos de mensaje Nombre proceso:. w3wp Proceso de Identificación: 1784 "

bu t el archivo de registro todavía está vacío

Respuesta

14

Sí, acaba de definir el origen de búsqueda de .NET y los oyentes, pero aún no ha ordenado a WCF que realice el rastreo.

también necesita:

<system.serviceModel> 
    <diagnostics> 
     <messageLogging 
      logMessagesAtTransportLevel="true" logMessagesAtServiceLevel="false" 
      logMalformedMessages="true" logEntireMessage="true" 
      maxSizeOfMessageToLog="65535000" maxMessagesToLog="500" /> 
    </diagnostics> 
</system.serviceModel> 

Estas dos secciones de configuración combinados deben hacerlo!

el fin de obtener sus mensajes vuelve a escribir en el archivo de registro de inmediato, es posible que desee añadir un parámetro a su <system.diagnostics> sección:

<system.diagnostics> 
    ... everything you already have.... 

    <trace autoflush="true" /> 
</system.diagnostics> 
+0

ok progress! esto apareció en el visor de eventos de la aplicación: el registro de mensajes se ha activado. La información confidencial se puede registrar sin cifrar, incluso si se cifró en el cable: por ejemplo, cuerpos de mensaje. Nombre del proceso: w3wp ID de proceso: 1784 pero el archivo de registro sigue vacío después de un par de llamadas de servicio fallidas. –

+0

@Joey J: agregué un elemento adicional a mi respuesta, inténtalo. –

+0

intenté, todavía nada = ( –

4

escribir en el archivo de registro, asegúrese de que la identidad en ejecución su aplicación web tiene acceso de escritura al directorio de registro.

Puede encontrar la identidad en la consola de administración de IIS 7. Seleccione el grupo de aplicaciones que usa su aplicación web. Haga clic en Configuración avanzada ... En la ventana de propiedades, busque el campo de identidad. Puede decir Servicio de red. Esta es la cuenta que necesita permiso de escritura para su carpeta de salida de registro.

Si ya tiene un archivo de registro en este directorio, intente eliminarlo y dejar que el marco lo cree.

Espero que esto ayude.

0
  1. Asegúrese de que ha configurado tanto los system.diagnostics y las secciones system.serviceModel/diagnóstico configurados.

  2. Asegúrese de tenerlos configurados en el archivoAppliance config.config/Web.config correcto.Lo que hay que tener en cuenta es que pueden existir múltiples archivos de configuración en un proyecto, y el usado depende de la configuración de compilación .

Personalmente tuve el mismo síntoma hasta que me di cuenta de que puse las secciones bajo app.config (en mi caso, el trazado de lado del cliente), en lugar de app.DebugLocal.config. El último se utilizó ya que mi configuración de compilación se estableció en DebugLocal.

0

Probablemente el problema se deba al permiso para escribir en el directorio de registro especificado en su archivo de configuración. Si no está seguro de cuál es el usuario en el contexto, otorgue permiso de escritura a todos los usuarios de la máquina.

  • clic derecho en el directorio de registro
  • Haga clic en la pestaña "Seguridad"
  • haga clic en Editar
  • En la sección "Nombres de grupo o usuario", seleccione "Usuarios MACHINENAME \ Users"
  • On " Permissions "sección conceder permiso para escribir

Funcionó bien para mí.

Cuestiones relacionadas