返回Stream和写入HTTP输出流之间的区别

时间:2013-05-08 14:56:36

标签: c# wcf web-services file stream

之间返回文件有什么区别
public Stream getFile(string filename){
    Stream s = _getFileStream(filename);
    Response.AddHeader( "Content-Disposition", "attachment;filename=" + filename+ ";" );
    return s;
}

public void getFile(string filename){
    byte[] b = _getFileBytes(filename);
    Response.AddHeader( "Content-Disposition", "attachment;filename=" + filename+ ";"  );
    Response.BinaryWrite(b)
}

以及问题here中提供的方法。

我遇到的问题是,有时用户上传的图像部分会出现乱码。同样奇怪的是我无法在本地重现问题 - 只有当应用程序在www。

我的想法是,由于我的资源是本地的,所以在流式传输数据时我不会看到问题,而且我将内容流回客户端的方式也不正确。那么返回文件的“正确”(或推荐)方式是什么?

1 个答案:

答案 0 :(得分:0)

我通过两次更改解决了我的问题。

  1. 我接受了carlosfiguera所说的内容并将HttpContext.Current.Response.AddHeaders(...)更改为WebOperationContext.Current.OutgoingResponse.Add(...)
  2. 在我的WebConfig中,我找到了binding标记,我的服务设置为bindingCOnfiguration并将transferMode更改为“流式”
  3. 这两项更改使我的图像正确显示。