Поток был прерван с помощью TransmitFile

Об этой ошибке есть множество потоков Stackru, но ни одна из них, похоже, не помогает мне решить мою проблему.

Я передаю небольшой файл Excel с сервера на клиент. Мой код:

protected void SaveSpreadsheet(string filePath)
{
    FileInfo myfile = new FileInfo(filePath);
    if (myfile.Exists)
    {
        Response.ClearContent();
        Response.AddHeader("Content-Disposition", "attachment; filename=" + myfile.Name);
        Response.AddHeader("Content-Length", myfile.Length.ToString());
        Response.ContentType = "xlsx";
        Response.TransmitFile(myfile.FullName);
        Response.End();
        //  Delete the file from the server
        if (File.Exists(strSaveFilePath))
        {
            File.Delete(strSaveFilePath);
        }
    }
}

Я получаю сообщение об ошибке "Поток был прерван". Из устранения неполадок я знаю, что Response.End(); линия это проблема.

Многие проблемы, связанные с этой ошибкой, связаны с людьми, использующими Response.Redirect, но эти решения мне не подходят. По словам Microsoft, замена этой строки на HttpContext.Current.ApplicationInstance.CompleteRequest была их решением, но это дает мне еще одну ошибку.

Многие решения на этом и других сайтах рекомендуют перемещать этот код за пределы моего блока Try-Catch. Я пытался это сделать, но последняя часть моего кода (удаление файла) не работает, поэтому я знаю, что я все еще получаю сообщение об ошибке.

Может ли кто-нибудь помочь мне решить эту проблему? Благодарю.

0 ответов

Другие вопросы по тегам