2009-07-09 11 views
0

Ok, donc j'essaie d'avoir un fichier journal d'erreurs pour le site Web qui s'exécute sur ASP.net et C#.Comment stocker le fichier sur le serveur ASP.net

J'ai essayé de stocker pour conduire avec le chemin régulier. Attendons-le car il est en code C# (code derrière la page) il va chercher le serveur et le stocker là. (À la fin, c'est un code qui est exécuté sur le serveur)

Malheureusement pour moi ce n'est pas vrai. Il est enregistré sur la machine locale à partir de laquelle le client ouvre le site.

Comment pouvez-vous forcer l'enregistrement sur la machine du serveur?

Je veux tous les journaux d'erreur sur un seul endroit. Toutes les suggestions sur la lecture ou comment faire cela.

string path = "C:\\WebSite"; 
    string error = "error";   
    try 
    { 
     // check if dir exists if it does i add file name to the path 
     // i removed code to keep it simple 
     path += "\\logs.txt"; 

     FileStream log_fs = 
       new FileStream(path, FileMode.Append, FileAccess.Write); 
     StreamWriter log_sw = 
       new StreamWriter(log_fs); 
     string log = String.Empty; 

     // formate log string using error message 

     log_sw.Write(log); 
     log_sw.Close(); 
     log_fs.Close(); 
    } 
    catch (Exception ex) 
    { 
     // here I e-mail the error in case logging failed 
    } 

Ce code générera fichier sur la machine locale, au lieu du serveur

+0

Exemple de code s'il vous plaît? – cjk

+0

Votre question n'est pas claire. Pouvez-vous poster du code? – Alex

+0

En outre, le code derrière ne peut pas enregistrer sur la machine locale sans demander à l'utilisateur de télécharger un fichier, sauf si vous avez un objet ActiveX ou similaire dans vos pages – cjk

Répondre

0

Vous pouvez vous connecter à un emplacement sur le serveur Web (que le compte d'utilisateur ASPNET a l'autorisation d'écrire) avec le code comme celui-ci :

string log = String.Empty; 

// format log string using error message 

try 
{ 
    using (StreamWriter logFile = new StreamWriter(@"C:\WebSite\logs.txt", true)) 
    { 
     logFile.WriteLine(log); 
    } 
} 
catch 
{ 
    // here I e-mail the error in case logging failed 
} 

Cela écrira le fichier sur le serveur Web hébergeant le site Web. Maintenant, si vous exécutez le site Web localement pendant le développement et que vous utilisez le serveur Web VS intégré ou IIS, le fichier sera bien sûr créé sur votre ordinateur lors du test du site Web en local.

0

Pour répondre à la partie de suggestion de votre question, avez-vous envisagé d'utiliser ELMAH, il enregistre des erreurs à différents stockages:

Microsoft SQL Server fichier de base de données Oracle (OracleErrorLog) SQLite (version 3) Microsoft Access (AccessErrorLog) VistaDB (VistaDBErrorLog) Les fichiers XML desserrées RAM (en mémoire)

ou envoyer par e-mail, Twitter

elmah est très facile à installer et très efficace

Questions connexes