线程正在使用TransmitFile

时间:2015-08-09 15:17:48

标签: c# error-handling http-response-codes

关于这个错误有很多线程Stackoverflow,但它们似乎都没有帮助我解决我的问题。

我正在将一个小的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);
        }
    }
}

我收到'Thread is aborted'错误。我从故障排除中知道了Response.End();线是问题。

与此错误相关的许多问题都来自使用Response.Redirect的人,但这些解决方案对我来说似乎不起作用。据微软称,replacing that line with HttpContext.Current.ApplicationInstance.CompleteRequest是他们的解决方案,但这给了我另一个错误。

此网站和其他网站上的许多解决方案都建议将此代码移到我的Try-Catch块之外。我尝试过,但我的代码的最后一部分(删除文件)不起作用,所以我知道我仍然收到错误。

任何人都可以帮我解决这个问题吗?感谢。

0 个答案:

没有答案