Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 返回流和写入HTTP输出流之间的区别_C#_Wcf_Web Services_File_Stream - Fatal编程技术网

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

C# 返回流和写入HTTP输出流之间的区别,c#,wcf,web-services,file,stream,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 Stream getFile(string filename){
    Stream s = _getFileStream(filename);
    Response.AddHeader( "Content-Disposition", "attachment;filename=" + filename+ ";" );
    return s;
}

以及问题中提供的方法

我遇到的问题是,有时用户上传的部分图像会出现混乱。更奇怪的是,我不能在本地重现这个问题——只有当应用程序在www上时


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

我通过两个更改解决了问题

我接受了carlosfiguera所说的,并更改了HttpContext.Current.Response.AddHeaders。。。到WebOperationContext.Current.OutgoingResponse.Add。。。 在我的网络配置中,我找到了绑定标签,我的服务将其绑定配置设置为,并将transferMode更改为Streamed
这两个更改使我的图像正确显示。

第一个函数不写入和删除数据。2nd在一个void函数中返回未声明的变量s。哎呀,我没有校对。这两种功能对我都适用。我只是想知道其中一个是否比另一个更好,以及为什么。如果你把WCF和普通ASP.NET混合在一起,我认为,根据问题中的标签,你不应该这样做。要么使用完整的ASP.NET并忘记[ServiceContract]和可以使用响应对象的朋友,要么使用完整的WCF返回流,但使用WebOperationContext.Current.OutgoingResponse.Headers添加返回的标题。我正在通过HttpContext.Current.Response访问响应。我想走WCF路线,避免使用ASP.net之类的东西。
public void getFile(string filename){
    byte[] b = _getFileBytes(filename);
    Response.AddHeader( "Content-Disposition", "attachment;filename=" + filename+ ";"  );
    Response.BinaryWrite(b)
}