The problem is probably your event source. You have to create an event source before you can write to the event log (if you don't, the Event log object tries to create one for you "automagically" the first time you write to the log).
You have to have hightened permissions to create an event log source. In some of my web apps, I have put the code to create the event source into my setup (setup runs as admin, so I'm always guaranteed to be able to create the source).
You just have to create the source once. After that, your ASP.Net app should have sufficient permissions to write entries specifying the source (or sources) that you created.
You can use an EventLogInstaller in your setup to create the source, or you could just write a little utility to call EventLog.CreateEventSource() as an admin.
I'll show you both ways:
// You would do this one from within an Installer class in a setup:
private void InstallEventLog()
{
EventLogInstaller logInstaller;
//Create an instance of an EventLogInstaller.
logInstaller = new EventLogInstaller();
//Set the source name of the event log.
logInstaller.Source = "TheEventSourceName";
Installers.Add(logInstaller);
}
Method 2: just call CreateEventSource once as an admin (you could put the following code into a console app, for example, and run the console app as admin
EventLog.CreateEventSource("TheSourceName", "Application");
Bonus:
If you have Powershell installed on your server, you can do it from the Powershell command prompt:
(Make sure you are running Powershell as an admin)
[system.Diagnostics.EventLog]::CreateEventSource("SourceName", "Application")
Hop that helps
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…