¿Qué debo cambiar para permitir que mi aplicación IIS7 ASP.Net 3.5 cree un origen de eventos y registre eventos en Windows EventLog?

ASP.Net 3.5 que se ejecuta en IIS 7 no parece permitir esto de la caja.

if (!EventLog.SourceExists("MyAppLog")) EventLog.CreateEventSource("MyAppLog", "Application"); EventLog myLog = new EventLog(); myLog.Source = "MyAppLog"; myLog.WriteEntry("Message"); 

Esto es parte de la seguridad de Windows desde Windows 2003.

Debe crear una entrada en el registro en HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Eventlog \ Application. Asegúrese de que el servicio de red o la cuenta que representa suplante tengan permiso para esta clave de registro.

Enlace @ CheGueVerra: no se permite el acceso solicitado al registro

He copiado esta respuesta desde aquí (la pregunta era Log4Net pero la respuesta todavía se aplica). El enlace de Technet echa de menos un paso vital.

Crear una clave de registro

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application\MY-AWESOME-APP

Crea un valor de cadena dentro de este

Llámalo EventMessageFile , establece su valor en

C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ EventLogMessages.dll

Esa ruta parece funcionar tanto en entornos de 64 bits como de 32 bits.

Con esta técnica no necesita configurar permisos en el registro, y una vez que se crea la clave anterior, debería funcionar.

Alternativamente
Si no tiene una gran granja de servidores, sino solo un pequeño “jardín web”, puede ejecutar una aplicación de consola en cada servidor que crea la fuente de registro de EventLog.CreateEventSource mediante EventLog.CreateEventSource , asegúrese de que la aplicación de consola sea administrada por un administrador.

Haga clic con el botón derecho en la aplicación y seleccione “Ejecutar como administrador”