Domanda

Ok, quindi sto cercando di avere file di log degli errori per il sito web in esecuzione su ASP.net e C #.

Ho cercato memorizzazione di guidare con percorso regolare. Aspettavo perché è in codice C # (codice dietro la pagina) che prenderà il server e conservarlo lì. (Alla fine è un codice che viene eseguito sul server)

Purtroppo per me quello non è vero. Esso viene salvato sul computer locale da cui client apre il sito.

Come si può costringerlo a essere salvato sul computer server?

Voglio che tutti i log degli errori in un unico luogo. Qualche suggerimento per la lettura o il modo di farlo.

   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
   }

Questo codice genererà file sul computer locale, invece di server

È stato utile?

Soluzione

È possibile accedere in qualsiasi posizione sul web server (che l'account utente ASPNET ha permesso di scrivere) con il codice come questo:

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
}

Questo scriverà il file al server web che ospita il sito. Ora, se si sta eseguendo il sito a livello locale durante lo sviluppo e si sta utilizzando il built-in server web VS o IIS, poi, naturalmente, il file verrà creato sul computer quando si verifica il sito in locale.

Altri suggerimenti

Per rispondere alla parte suggestione della tua domanda, hai pensato di utilizzare ELMAH , è registrerà gli errori a diversi depositi:

Microsoft SQL Server Oracle (OracleErrorLog) SQLite (versione 3) file di database Microsoft Access (AccessErrorLog) VistaDB (VistaDBErrorLog) file XML allentati RAM (in memoria)

o inviare via e-mail, Twitter

ELMAH è molto facile da installare e molto efficace

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top