我认为我的问题与其他人提出的问题类似,但只是差异很大,以至于我不会因为问这个问题而受到重创。我正在将Excel文件复制到唯一(用户特定)名称,然后使用Open XML SDK 2.0打开新文件,更改某些数据,关闭(保存)用户特定文件,然后将其下载到客户端。我的(旧WebForms)代码如下所示:
Response.ContentType = "application/Excel";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + outputFile);
Response.Flush();
Response.TransmitFile(Path.Combine(outputFolder, outputFile));
Response.End();
File.Delete(Path.Combine(outputFolder, outputFile));
正如在其他问题中有详细记录的那样,Response.End()会导致异常,这会阻止File.Delete被执行。有趣的是,即使我处理了Response.End()异常,它仍然通过我的调用代码保持“异常”。是否有任何关于在服务器上获取文件的建议?我已经尝试了一些不包含Response.End()的其他建议,但是我将页面数据和其他疯狂的东西都添加到我的Excel文件中。
我对本文中的WebClient内容寄予厚望,但它下载到服务器而不是客户端:
答案 0 :(得分:0)
我个人不喜欢在响应发送后需要代码继续执行的任何内容。我会处理这三种方式之一。
找到一种方法,无需写入文件即可完全在内存中进行更改。我不是Open XML专家,因此我不确定该SDK是否可行。
将文件读入内存。删除文件。退回内容。
使用清理作业(Azure Web作业,如果托管Azure云)实施临时文件夹,该文件夹仅删除超过N秒的内容。