Как сохранить файл на сервере ASP.net - PullRequest
0 голосов
/ 09 июля 2009

Хорошо, поэтому я пытаюсь получить файл журнала ошибок для сайта, работающего на ASP.net и C #.

Я пытался сохранить диск с обычным путем. Ожидая его, потому что он находится в коде c # (код за страницей), он подберет сервер и сохранит его там. (В конце концов, это код, который выполняется на сервере)

К сожалению, для меня это неправда. Он сохраняется на локальном компьютере, с которого клиент открывает сайт.

Как заставить его сохраниться на сервере?

Я хочу, чтобы все журналы ошибок были в одном месте. Любые предложения по чтению или как это сделать.

   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
   }

Этот код будет генерировать файл на локальном компьютере вместо сервера

Ответы [ 2 ]

0 голосов
/ 09 июля 2009

Чтобы ответить на вопросную часть вашего вопроса, рассматривали ли вы использование ELMAH , он будет регистрировать ошибки на разных хранилищах:

Microsoft SQL Server Oracle (OracleErrorLog) Файл базы данных SQLite (версия 3) Microsoft Access (AccessErrorLog) VistaDB (VistaDBErrorLog) Свободные XML-файлы RAM (в памяти)

или отправить по электронной почте, Twitter

Elmah очень прост в настройке и очень эффективен

0 голосов
/ 09 июля 2009

Вы можете войти в любое место на веб-сервере (на которое у учетной записи пользователя ASPNET есть разрешение на запись) с помощью такого кода:

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
}

Это запишет файл на веб-сервер, на котором размещен сайт. Теперь, если вы используете сайт локально во время разработки и используете встроенный веб-сервер VS или IIS, то, конечно, файл будет создан на вашем компьютере при локальном тестировании сайта.

...