Ссылка на мой предыдущий вопрос относительно загрузки файла с сервера и правильной обработки исключений. Я уверен, что я решил эту проблему, а затем в классическом программировании вернулся через несколько дней, чтобы разочарованно найти его сломанным: - (
Обновленный код:
private static void GoGetIt(HttpContext context)
{
var directoryInfoOfWhereTheDirectoryFullOfFilesShouldBe = new FileInfo(......);
var name = SomeBasicLogicToDecideName();
//if (!directoryInfoOfWhereTheDirectoryFullOfFilesShouldBe.RefreshExists())
//{
// throw new Exception(string.Format("Could not find {0}.", name));
//}
var tempDirectory = ""; //Omitted - creates temporary directory
try
{
directoryInfoOfWhereTheDirectoryFullOfFilesShouldBe.CopyAll(tempDirectory);
var response = context.Response;
response.ContentType = "binary/octet-stream";
response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}.zip", name));
ZipHelper.ZipDirectoryToStream(tempDirectory, response.OutputStream);
response.End();
}
catch (Exception ex)
{
Debug.WriteLine(ex.ToString());
context.Response.StatusCode = 404;
}
finally
{
tempDirectory.DeleteWithPrejudice();
}
}
Это работало нормально и возвращало zip, иначе, если файл не существовал, возвращая 404. Затем на стороне клиента я мог бы обработать это:
public bool Download()
{
try
{
using (var client = new WebClient())
{
client.DownloadFile(name, tempFilePath);
}
}
catch (Exception)
{
fileExists = false;
}
return fileExists;
}
Но проблема сейчас в двух вещах.
1) Я получаю System.Threading.ThreadAbortException: поток был прерван в блоке try-catch на стороне сервера. Обычно это был файл, не найденный исключением. Я понятия не имею, что или почему выдает это новое исключение?
2) Теперь, когда на стороне сервера выдается другое исключение вместо файла, который не найден, может показаться, что я не могу использовать эту настройку для приложения, поскольку на стороне клиента предполагается, что любое исключение filenotfound.
Любая помощь, особенно информация о том, почему выбрасывается исключение ThreadAbortException!?!? с благодарностью Приветствия