В настоящее время я работаю над сайтом, который разрабатывается с использованием Asp.Net и С#. Я использую Asp.Net Handler
, чтобы пользователи могли загружать файлы. Я могу скачать файлы без проблем. Однако мне нужно регистрировать, какие файлы были загружены успешно. Кажется, эта часть работает неправильно. Например. если я нажму на файл для загрузки, а затем нажмите "Отмена" в подсказке браузера, мой код все еще записывается в журнал. Я не могу понять, как я могу записать в журнал только, когда файл успешно загружен.
Мой код ниже.
public void ProcessRequest(HttpContext context)
{
string logFilePath = "PathToMyLogFile";
string filePath = Uri.UnescapeDataString(context.Request.QueryString["file"]);
string fileName = Path.GetFileName(filePath);
if (context.Response.IsClientConnected) //Shouldn't this tell me if the client is connected or not?
{
using (var writer = new StreamWriter(logFilePath, true))
{
if (!File.Exists(logFilePath))
{
//Create log file if one does not exist
File.Create(logFilePath);
}
else
{
writer.WriteLine("The following file was downloaded \"{0}\" on {1}", fileName, DateTime.Now.ToString("dd/MM/yyyy") + " at " + DateTime.Now.ToString("HH:mm:ss"));
writer.WriteLine(Environment.NewLine + "-----------------------------------------------------------------------------" + Environment.NewLine);
}
}
}
context.Response.ContentType = "application/octet-stream";
context.Response.AppendHeader("Content-Disposition", "attachment;filename=\"" + Path.GetFileName(filePath));
context.Response.WriteFile(filePath);
context.Response.End();
}
Я ценю вашу помощь и поддержку.