|
Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte.
|
Traduction
Source
|
Procédure pas à pas : intégration du traçage ASP.NET avec le traçage System.Diagnostics
Création d'un composant métier personnalisé qui peut retourner des données sur une page Web. Le composant lit les données à partir d'un fichier XML. Création d'une page Web qui fait référence à l'objet métier personnalisé comme source de données. Activation du suivi pour la page Web qui fait référence à l'objet métier. Écriture de messages de trace à la page Web qui fait référence à l'objet métier. Écriture de messages Trace dans un objet métier personnalisé. Configuration d'une application ASP.NET pour écrire tous les messages de trace dans un seul résultat. Lecture du résultat du suivi.
Microsoft .NET Framework et un site Web ASP.NET existant.
Remarque |
|---|
Pour créer la page Default.aspx
Ouvrez un éditeur de texte, tel que le Bloc-notes et créez un fichier. Entrez le code suivant dans le fichier. Enregistrez le fichier dans le répertoire racine de l'application ASP.NET sous Default.aspx.
Pour créer l'objet métier AuthorClass
Sous le répertoire racine de l'application, créez un répertoire nommé App_Code. Dans un éditeur de texte, tel que le Bloc-notes, ouvrez un nouveau fichier. Entrez le code suivant dans le fichier. Imports Microsoft.VisualBasic Imports System Imports System.Web Imports System.Data Namespace PubsClasses Public Class AuthorClass Private dsAuthors As DataSet = _ New System.Data.DataSet("ds1") Private filePath As String = _ HttpContext.Current.Server.MapPath("~/App_Data/authors.xml") Public Sub New() dsAuthors.ReadXml(filePath, Data.XmlReadMode.ReadSchema) End Sub Public Function GetAuthors() As DataSet Return dsAuthors End Function End Class End Namespace
using System; using System.Web; using System.Data; namespace PubsClasses { public class AuthorClass { private DataSet dsAuthors = new DataSet("ds1"); private String filePath = HttpContext.Current.Server.MapPath("~/App_Data/authors.xml"); public AuthorClass() { dsAuthors.ReadXml (filePath, XmlReadMode.ReadSchema); } public DataSet GetAuthors () { return dsAuthors; } } }
Dans le répertoire App_Code, enregistrez le fichier sous AuthorClass.cs (pour C#) ou AuthorClass.vb (pour Microsoft Visual Basic).
Pour créer le fichier de données Authors.xml
Sous le répertoire racine de l'application, créez un répertoire nommé App_Data. Dans un éditeur de texte, tel que le Bloc-notes, ouvrez un nouveau fichier. Entrez les données XML suivantes dans le fichier. Le fichier XML inclut des informations de schéma qui identifient la structure de la base de données des données. Il inclut une contrainte de clé primaire pour la clé.
RemarqueLes composants métier peuvent utiliser toutes sortes de données, tant qu'elles sont adaptées à votre application. Pour des raisons de commodité, cette procédure pas à pas utilise un fichier XML. <?xml version="1.0" standalone="yes"?> <dsPubs xmlns="http://www.tempuri.org/dsPubs.xsd"> <xs:schema id="dsPubs" targetNamespace="http://www.tempuri.org/dsPubs.xsd" xmlns:mstns="http://www.tempuri.org/dsPubs.xsd" xmlns="http://www.tempuri.org/dsPubs.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified"> <xs:element name="dsPubs" msdata:IsDataSet="true"> <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="authors"> <xs:complexType> <xs:sequence> <xs:element name="au_id" type="xs:string" /> <xs:element name="au_lname" type="xs:string" /> <xs:element name="au_fname" type="xs:string" /> <xs:element name="au_phone" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> <xs:unique name="Constraint1" msdata:PrimaryKey="true"> <xs:selector xpath=".//mstns:authors" /> <xs:field xpath="mstns:au_id" /> </xs:unique> </xs:element> </xs:schema> <authors> <au_id>172-32-1176</au_id> <au_lname>White</au_lname> <au_fname>Gerry</au_fname> <au_phone>408 496-7223</au_phone> </authors> <authors> <au_id>213-46-8915</au_id> <au_lname>Green</au_lname> <au_fname>Marjorie</au_fname> <au_phone>415 986-7020</au_phone> </authors> </dsPubs>Dans le répertoire App_Data, enregistrez le fichier sous Authors.xml, puis fermez-le.
Pour activer le suivi et afficher les messages de trace ASP.NET
Dans un éditeur de texte, tel que le Bloc-notes, ouvrez la page Default.aspx. Ajoutez un attribut Trace à la directive @ Page, puis affectez true à Trace. La déclaration active le traçage ASP.NET de la page Web. Pour plus d'informations, consultez Comment : activer le traçage d'une page ASP.NET.
Pour écrire des messages de trace à partir d'un formulaire Web
Dans votre page Web Default.aspx, entrez le code suivant après la directive @ Page mais avant la balise <html>. <script runat="server"> Private Sub Page_Load(sender As Object, e As EventArgs) Trace.Write("ASP.NET TRACE","page_load called.") Trace.Write("ASP.NET TRACE","page_load finished.") End Sub ' Page_Load </script>
<script runat="server"> private void page_load(object sender, EventArgs e) { Trace.Write("ASP.NET TRACE","page_load called."); Trace.Write("ASP.NET TRACE","page_load finished."); } </script>
RemarqueVous êtes susceptible de devoir inclure un attribut de langage dans votre directive @ Page en fonction du langage que vous utilisez.
Pour écrire des messages de trace à l'objet métier AuthorClass
Entrez le code suivant dans le constructeur AuthorClass. System.Diagnostics.Trace.WriteLine("AuthorClass is created.", "AUTHORCLASS TRACE")
System.Diagnostics.Trace.WriteLine("AuthorClass is created.", "AUTHORCLASS TRACE");
Entrez le code suivant dans la méthode AuthorClass.GetAuthors. System.Diagnostics.Trace.WriteLine("GetAuthors called.","AUTHORCLASS TRACE")
System.Diagnostics.Trace.WriteLine("GetAuthors called.","AUTHORCLASS TRACE");
RemarqueLorsque vous utilisez la méthode ASP.NET TraceContext.Write, la catégorie de trace apparaît en-avant du message de trace dans la liste de paramètres de la méthode. Toutefois, lorsque vous utilisez la méthode Write de suivi .NET Framework, le message de trace apparaît en-avant de la catégorie de trace.
Pour créer un fichier Web.config
Ouvrez un éditeur de texte, tel que le Bloc-notes et créez un fichier. Entrez le texte suivant dans le fichier. <!-- Web.Config Configuration File --> <configuration> <system.web> <customErrors mode="Off"/> </system.web> </configuration>Enregistrez le fichier dans le même répertoire que Default.aspx sous Web.config.
Pour ajouter un WebPageTraceListener à votre application dans la configuration
Ouvrez le fichier Web.config de votre application. Placez le code suivant dans votre fichier Web.config après la section <system.web>. <system.diagnostics> <trace> <listeners> <add name="WebPageTraceListener" type="System.Web.WebPageTraceListener, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> </listeners> </trace> </system.diagnostics>Cette section de configuration ajoute un objet WebPageTraceListener à la collection d'écouteurs de la trace pour votre application.
Pour créer un fichier Global.asax et ajouter un écouteur de la trace par programme
Ouvrez un éditeur de texte, tel que le Bloc-notes et créez un fichier. Entrez le code suivant dans le fichier. <%@ Application Language="VB" %> <%@ Import Namespace="System.Web" %> <script runat="server"> Sub Application_Start(sender As Object, e As EventArgs) ' Code that runs when the application is started. End Sub Sub Application_End(sender As Object, e As EventArgs) ' Code that runs when the application shuts down. End Sub </script>
<%@ Application Language="C#" %> <%@ Import Namespace="System.Web" %> <script runat="server"> void Application_Start(Object sender, EventArgs e) { // Code that runs when the application is started. } void Application_End(Object sender, EventArgs e) { // Code that runs when the application shuts down. } </script>
Dans le répertoire racine de votre application, enregistrez le fichier sous Global.asax. Cette procédure permet de créer un fichier Global.asax de base qui est un module compilé qui contient le code qui s'exécute à chaque fois que l'application est lancée ou arrêtée. Entrez le code suivant dans la méthode Application_Start de votre fichier Global.asax. ' Create a trace listener for Web forms. Dim gbTraceListener As New WebPageTraceListener() ' Add the event log trace listener to the collection. System.Diagnostics.Trace.Listeners.Add(gbTraceListener)
// Create a trace listener for Web forms. WebPageTraceListener gbTraceListener = new WebPageTraceListener(); // Add the event log trace listener to the collection. System.Diagnostics.Trace.Listeners.Add(gbTraceListener);
Cela ajoute par programme un WebPageTraceListener à la collection d'écouteurs de la trace de votre application. Dans le même répertoire que Default.aspx, enregistrez le fichier sous Global.aspx.
Pour compiler automatiquement votre application avec la trace activée
Ouvrez le fichier Web.config de votre application. Placez le code suivant dans votre fichier Web.config après la section <system.diagnostics>. <system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" compilerOptions="/d:TRACE" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="1" /> <compiler language="VB" extension=".vb" compilerOptions="/d:Trace=true" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> </compilers> </system.codedom>Par défaut, à l'aide de cette section de configuration, votre application peut compiler tous les modules avec l'option TRACE.
Pour acheminer tous les messages de trace ASP.NET vers la sortie de traçage du système
Ouvrez le fichier Web.config de votre application. Ajoutez un nouvel attribut, writeToDiagnosticsTrace, à l'élément trace sous <system.web>, puis affecte true à writeToDiagnosticsTrace. <system.web> <trace writeToDiagnosticsTrace="true"/> <customErrors mode="Off"/> </system.web>Cet attribut de configuration indique le traçage ASP.NET pour acheminer des messages de trace ASP.NET au mécanisme de la sortie de traçage du système standard. Pour consulter le ASP.NET et les messages de trace System.Diagnostics dans un contexte à l'extérieur d'une page ASP.NET, utilisez un objet TextWriterTraceListener pour écrire les messages de trace dans un fichier. L'objet TextWriterTraceListener doit être configuré pour écrire dans un fichier spécifique. Pour ce faire, utilisez l'attribut initializeData de <add>, élément de <listeners> pour <trace>. Procédez de la même manière que pour ajouter l'objet WebPageTraceListener dans la deuxième procédure dans "Routage de l'ensemble de la sortie de traçage au Web Form", plus avant dans cette procédure pas à pas, pour ajouter un objet TextWriterTraceListener à votre fichier Web.config et configurer le TextWriterTraceListener à écrire dans un fichier contenu dans le répertoire racine de l'application nommé Asptesttrace.log. Si vous n'avez pas ajouté de WebPageTraceListener par programme dans le fichier Global.asax, la section <system.diagnostics> du fichier Web.config sera semblable à : <system.diagnostics> <trace autoflush="true"> <listeners> <add name="WebPageTraceListener" type="System.Web.WebPageTraceListener, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> <add name="TestTracer" type="System.Diagnostics.TextWriterTraceListener, System, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="<app root directory>\Asptesttrace.log" /> </listeners> </trace> </system.diagnostics>
RemarqueL'attribut initializeData de l'étape précédente a une valeur d'espace réservé pour le répertoire racine de l'application ASP.NET. Si vous essayez d'écrire des messages de trace dans un fichier autre que le répertoire racine de votre application, vous pouvez recevoir une exception de sécurité. Par défaut, ASP.NET n'autorise pas l'écriture de fichiers aux emplacements sur le disque situés à l'extérieur du répertoire racine de l'application, tels que C:\. En outre, vous pouvez devoir accorder l'autorisation en écriture dans le journal des traces pour le compte du processus de traitement ASP.NET. Par défaut, vous devez attendre pour remplir la mémoire tampon de trace avant que les données de trace soient écrites dans le flux de données cible. Pour consulter immédiatement les données de trace dans le journal des traces après avoir demandé votre page ASP.NET, videz la mémoire tampon avec chaque écriture de trace en affectant true à l'ensemble d'attributs autoflush comme dans l'étape précédente. La valeur par défaut de l'attribut autoflush est false. Pour vider par programme la mémoire tampon d'informations de traçage, appelez la méthode Flush.
RemarquePour l'objet métier que vous avez développé dans cette procédure pas à pas, si vous appelez la méthode Flush dans la méthode Page_Load et que l'attribut autoflush est false, le journal des traces n'affichera pas les données de trace parce que l'objet métier est restitué après que l'événement Load de la page s'est produit.
Ajoutez un objet EventLogTraceListener à votre application. Pour ce faire, vous devez ajouter un objet EventLogTraceListener par programme ou en utilisant le fichier de configuration qui utilise la même procédure que le WebPageTraceListener. Vous pouvez ouvrir le journal des événements pour examiner les messages de trace que votre application écrit dans le journal des événements. Modifiez le composant métier pour utiliser des données de base de données au lieu d'un fichier XML. Vous n'avez pas besoin d'apporter de modification aux contrôles sur la page.