Question

J'ajoute la fonctionnalité de suivi à un site Web ASP.NET, j'ai décidé d'enquêter sur TraceSource en créant deux prototypes; un projet d'application Web et un projet de site Web.

J'utilise Web.config similaire pour chaque projet pour se connecter traces au journal des événements Windows:

<configuration>
    <system.web>
        <compilation debug="true" strict="false" explicit="true" targetFramework="4.0"/>
    </system.web>    
    <system.diagnostics>
        <trace autoflush="true" />
        <sources>
            <source name="HelloWorld">
                <listeners>
                    <add name="eventlogListener" />
                </listeners>
            </source>
        </sources>    
        <sharedListeners>
            <add name="eventlogListener" type="System.Diagnostics.EventLogTraceListener" initializeData="My Source" />
        </sharedListeners>
    </system.diagnostics>
</configuration>

Je suis tout simplement à partir de la trace de base suivante:

private static TraceSource _ts = new TraceSource("HelloWorld", SourceLevels.All);

protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);

    _ts.TraceEvent(TraceEventType.Information, 10, "Greetings from OnLoad.");
}

Avec le projet d'application Web, je peux voir la trace créée dans le journal des événements. Cependant, le projet de site Web, je ne peux pas.

des étapes supplémentaires (Ex: paramètres web.config, autorisations, etc.) nécessaires aux projets de site Web pour utiliser TraceSource

Était-ce utile?

La solution 2

Après quelques essais et erreurs, apparemment le nœud System.CodeDom \ compilateurs est nécessaire dans le web.config, mais je ne suis pas tout à fait sûr pourquoi.

Autres conseils

La raison en est que les procédés de trace ne sont compilées par Net si la constante de TRACE est définie comme une partie de la compilation. Dans un projet de site Web, la façon de le faire est d'inclure la configuration du compilateur dans votre fichier web.config, comme ceci:

  <system.codedom>
    <compilers>
      <compiler
         language="c#;cs;csharp"
         extension=".cs"
         type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.50727.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
         compilerOptions="/d:TRACE"
         warningLevel="1" />
    </compilers>
  </system.codedom>

Notez le "/ d: TRACE". Option du compilateur, qui permet la constante TRACE lors de la compilation de votre code (C # dans cet exemple)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top