【发布时间】:2011-09-21 17:01:08
【问题描述】:
情况:
在一个 C# 网站项目中,我从数据库中获取数据并将所需数据写入 excel 文件服务器端,然后我想提供下载。
问题:
在启动下载的代码末尾(见下文)我收到一个运行时错误,表明线程已终止并且没有文件可供下载。
我的代码
FileStream fStream = new FileStream(resultFile, FileMode.Open, FileAccess.Read);
byte[] byteBuffer = new byte[(int)fStream.Length];
fStream.Read(byteBuffer, 0, (int)fStream.Length);
fStream.Close();
response.Clear();
response.ContentType = "application/vnd.ms-excel";
response.AddHeader("Content-Length", byteBuffer.Length.ToString());
response.AddHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(resultFile));
response.TransmitFile(resultFile);
response.End();
我希望有人可以帮助我解决这个问题。在此先感谢:)
【问题讨论】:
-
@GregoryNozik,
TransmitFile是这里的正确选择吗?看起来 OP 想要一个同步解决方案。 -
我应该说是中断而不是顺便终止。无论如何,我在没有响应的情况下尝试了它。结束并且我没有收到错误,但我也没有得到一个对话框来保存提供下载的文件。而不是 TransmitFile 我也尝试了 WriteFile(resultFile) 和 BinaryWrite(byteBuffer) 但我得到了同样的错误......
-
代码在 Web 方法中这一事实是否与此有关?
-
@Gregory Nozik:是的,但它只是在响应时停止执行 webmehod。End 行并且提琴手显示 500,或者没有该行我得到 200 但什么也没发生
-
你在哪些浏览器上试用过这个? (IE比较敏感,要求页面URL与下载文件名匹配,例如)
标签: asp.net multithreading download terminate