OutputStream上的HttpException。如何正确发送文件

时间:2011-12-05 09:01:04

标签: c# asp.net file httpresponse

我使用下面的代码将文件从ASP.NET Rest Api发送到客户端。有时我看到错误日志“远程主机关闭了连接。错误代码是0x800703E3。”这是发送流响应的正确方法吗?

var outputFileName;                   
context.Response.ContentType = WebHelper.GetMimeType(outputFileName);
context.Response.AddHeader("Content-Disposition", string.Format("{0}; filename={1}", "attachment", outputFileName));
context.Response.AddHeader("Content-Length", binaryData.Length.ToString());
context.Response.OutputStream.Write(binaryData, 0, binaryData.Length);
context.Response.Flush();
context.Response.Close();

2 个答案:

答案 0 :(得分:0)

这个:

context.Response.Clear();

context.Response.ContentType = ...;
context.Response.AddHeader( "Content-Disposition", ... );
// do not set Content-Length
context.Response.Write( binaryData );
context.Response.Flush();
context.Response.End();

答案 1 :(得分:0)

如果你有一个文件中的数据,那么使用Response.TransmitFile比使用Response.OutputStream.Write要好得多,因为TransmitFile不会将文件数据缓冲在内存中。

至于您收到的错误消息,这是完全正常的。如果用户在传输文件时断开网络连接,取消下载或关闭浏览器,则会出现此错误消息,通知您传输未完成。