What do I need to change to allow my IIS7 ASP.Net 3.5 application to create an event source and log events to Windows EventLog?
Asked Answered
J

3

37

ASP.Net 3.5 running under IIS 7 doesn't seem to allow this out of the box.

        if (!EventLog.SourceExists("MyAppLog"))
            EventLog.CreateEventSource("MyAppLog", "Application");

        EventLog myLog = new EventLog();
        myLog.Source = "MyAppLog";
        myLog.WriteEntry("Message");
Jinnyjinrikisha answered 13/11, 2008 at 2:6 Comment(1)
Possible duplicate of System.Security.SecurityException when writing to Event LogEnstatite
J
26

This is part of windows security since windows 2003.

You need to create an entry in the registry under HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application Make sure that network service or the account you impersonate has permission to this registry key.

@CheGueVerra's link: Requested Registry Access Is Not Allowed

Jillianjillie answered 13/11, 2008 at 2:26 Comment(1)
Link is no longer workingInterrogator
J
42

I've copied this answer from here (the question was Log4Net but the answer still applies). The technet link misses a vital step.

Create a registry key

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

Create a string value inside this

Name it EventMessageFile, set its value to

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

That path appears to work in both 64 bit and 32 bit environments.

With this technique you don't need to set permissions in the registry, and once the key above is created it should just work.

Alternatively
If you don't have a large server farm but just a small "web garden" you could run a console application on each server that creates the event log source using EventLog.CreateEventSource, make sure the console application is run by an administrator.

Joust answered 21/10, 2011 at 10:53 Comment(1)
Since you mentioned log4net, here is the link to eventlogappender troubleshoot. logging.apache.org/log4net/release/faq.html#trouble-EventLog . There is official ms link there on how to create event source. It prudent to note that this approach is not recommended for production use though.Vlada
J
26

This is part of windows security since windows 2003.

You need to create an entry in the registry under HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application Make sure that network service or the account you impersonate has permission to this registry key.

@CheGueVerra's link: Requested Registry Access Is Not Allowed

Jillianjillie answered 13/11, 2008 at 2:26 Comment(1)
Link is no longer workingInterrogator
C
6

Right click the application and choose "Run as Administrator"

Conductor answered 21/1, 2016 at 7:52 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.