Write to IIS/Event Log File ?

  • Thread starter Thread starter Angelos Karantzalis
  • Start date Start date
A

Angelos Karantzalis

Hi y'all,

recently I've come across a situation where a web service needs to deal
with an exception that might arise, originating from a COM+ component. It
then returns an int value (please don't ask me why) indicating that there
was something wrong with the requested operation.

Assuming that I don't really know all the posible exceptions that might
arise from the COM+ layer, and therefore I can't accurately return an int
identifying the exception, I need a way to log the actual exception trace,
either in the web service, or in the COM+ layer.

Writting to the event log threw me Security Exceptions, because ASPNET
doesn't have write access to the event log. Since the COM+ level runs under
the same identity apparently, I can't do it there either ..

So, question: how can I log either into the IIS Log, or the Event log from a
web service ?

Cheers,
Angel
O:]
 
Angelos Karantzalis said:
Hi y'all,

recently I've come across a situation where a web service needs to deal
with an exception that might arise, originating from a COM+ component. It
then returns an int value (please don't ask me why) indicating that there
was something wrong with the requested operation.

Assuming that I don't really know all the posible exceptions that might
arise from the COM+ layer, and therefore I can't accurately return an int
identifying the exception, I need a way to log the actual exception trace,
either in the web service, or in the COM+ layer.

Writting to the event log threw me Security Exceptions, because ASPNET
doesn't have write access to the event log.

ASP.NET should have rights to WRITE to the application event
log - however it does not have right to create a new Event
Source:

PRB: "Requested Registry Access Is Not Allowed" Error
Message When ASP.NET Application Tries to Write New
EventSource in the EventLog
http://support.microsoft.com/default.aspx?scid=kb;en-us;329291

Little examples like

How To Write to an Event Log by Using Visual C# .NET
http://support.microsoft.com/default.aspx?scid=kb;en-us;307024

fail to mention this fact.

For a more thorough treatment of event logging see

Visual Basic and Visual C# Concepts: Walkthrough: Installing
an Event Log Component
http://msdn.microsoft.com/library/d...bwlkwalkthroughcreatingeventloginstallers.asp

In essence it is your project's installer's responsibilty to
create the event source when the application/component is
installed - and it should also delete it when the
application/component is removed.
Since the COM+ level runs under
the same identity apparently, I can't do it there either ..
Well you can fix that. If the Enterprise Component specifies

[assembly: ApplicationActivation(ActivationOption.Library)]

then you have no choice and will be running in the caller's
security context. If you specify

[assembly: ApplicationActivation(ActivationOption.Server)]

then you can configure a dedicated account for the Server
through Component Services Properties ("Identity" Tab) -
this in fact is the tactic to use to perform actions that
requires elevated privileges that ASP.NET has no business
having. Note that the Server must reside in the GAC.

..NET Framework Developer's Guide: Registering Serviced
Components
http://msdn.microsoft.com/library/d...e/html/cpconregisteringservicedcomponents.asp

NET Framework Class Library: ApplicationActivationAttribute
Class
http://msdn.microsoft.com/library/d...sapplicationactivationattributeclasstopic.asp

..NET Framework Class Library: ActivationOption Enumeration
http://msdn.microsoft.com/library/d...erpriseservicesactivationoptionclasstopic.asp
So, question: how can I log either into the IIS Log, or the Event log from a
web service ?

Cheers,
Angel
O:]
 
Back
Top