Как сохранить файл на сервере ASP.net
-
12-09-2019 - |
Вопрос
Итак, я пытаюсь создать файл журнала ошибок для веб-сайта, работающего на 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
}
Этот код сгенерирует файл на локальном компьютере, а не на сервере
Решение
Вы можете войти в любое место на веб-сервере (на запись в которое учетная запись пользователя 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, то, конечно, файл будет создан на вашем компьютере при локальном тестировании веб-сайта.
Другие советы
Чтобы ответить на предложенную часть вашего вопроса, рассматривали ли вы возможность использования ЭЛЬМА, он будет регистрировать ошибки в разных хранилищах:
Microsoft SQL Server Oracle (OracleErrorLog) Файл базы данных SQLite (версия 3) Microsoft Access (AccessErrorLog) VistaDB (VistaDBErrorLog) Свободные XML-файлы Оперативная память (in-memory)
или отправить по электронной почте, twitter
elmah очень прост в настройке и очень эффективен