Ik wil een stukje tracing inbouwen in mijn ASP.NET 3.5 applicatie. Dit doe ik door middel van TraceSources en TraceListeners (zie o.a. http://weblogs.asp.net/ra...personal-vade-mecum.aspx). Om precies te zijn gebruik ik de XmlWriterTraceListener om mijn traceinformatie te loggen naar een .xml-bestand in een Log directory. Op zich werkt dit als een zonnetje, en mijn messages worden keurig weggeschreven naar het log-bestand...
...mits de huidige domein-user schrijfrechten heeft in de Log-directory.
Mijn ASP.NET applicatie werkt namelijk met IIS authentication i.c.m. impersonation (zie o.a. http://msdn.microsoft.com/en-us/library/134ec8tc(VS.80).aspx), wat betekent dat de thread die de trace-messages weg moet schrijven draait onder de identiteit van de gebruiker die op dat moment de pagina bekijkt.
Nu zou ik toch graag ten alle tijden willen kunnen tracen, dus nu zie ik 2 mogelijkheden:
1) De group "Everyone" schrijfrechten geven op de Log folder
2) Bij elke TraceSource.TraceXxx() ervoor zorgen dat de thread tijdelijk onder een voorgedefinieerd account draait (mag een specifiek Trace-account zijn, maar ook Network Service), zodat ik alleen dat account schrijfrechten hoef te geven op de Log-folder.
De eerste optie is eigenlijk geen goede optie (althans, geen nette waar de beheerders blij van zullen worden), dus voor zover ik zie zou ik voor optie 2 moeten gaan. Nu blijkt dat het nog niet zo makkelijk is om de thread van identiteit te laten wisselen (zie o.a. http://aspalliance.com/39), dus echt aanlokkelijk is dit ook niet.
Alleen, ik kan me bijna niet voorstellen dat ik dergelijke kunstgrepen moet uithalen om wat trace-messages weg te kunnen schrijven. Zit ik inderdaad op het verkeerde pad, of...?
...mits de huidige domein-user schrijfrechten heeft in de Log-directory.
Mijn ASP.NET applicatie werkt namelijk met IIS authentication i.c.m. impersonation (zie o.a. http://msdn.microsoft.com/en-us/library/134ec8tc(VS.80).aspx), wat betekent dat de thread die de trace-messages weg moet schrijven draait onder de identiteit van de gebruiker die op dat moment de pagina bekijkt.
Nu zou ik toch graag ten alle tijden willen kunnen tracen, dus nu zie ik 2 mogelijkheden:
1) De group "Everyone" schrijfrechten geven op de Log folder
2) Bij elke TraceSource.TraceXxx() ervoor zorgen dat de thread tijdelijk onder een voorgedefinieerd account draait (mag een specifiek Trace-account zijn, maar ook Network Service), zodat ik alleen dat account schrijfrechten hoef te geven op de Log-folder.
De eerste optie is eigenlijk geen goede optie (althans, geen nette waar de beheerders blij van zullen worden), dus voor zover ik zie zou ik voor optie 2 moeten gaan. Nu blijkt dat het nog niet zo makkelijk is om de thread van identiteit te laten wisselen (zie o.a. http://aspalliance.com/39), dus echt aanlokkelijk is dit ook niet.
Alleen, ik kan me bijna niet voorstellen dat ik dergelijke kunstgrepen moet uithalen om wat trace-messages weg te kunnen schrijven. Zit ik inderdaad op het verkeerde pad, of...?