AjaxEnabled WCF Service中如何获取到Response

最近在研究基于Ajax-Enabled WCF方式直接给前台提供服务,在返回数据优化方面遇到一些小麻烦,归纳如下:

问题1:因为想要WCF Service方法直接返回Stream流,但若直接返回流,会被浏览器识别为文件流,弹出下载提示;

问题2:如果采用Gzip压缩Json数据流,则需要修改返回的Response中的Content-Encoding属性,否则浏览器会把流识别为乱码。

解决办法:WebOperationContext类!

在WCF中无法从HttpContext.Current中获取到当前的请求的Request和Response对象,因此必须改用WebOperationContext(PS,此类也只能在ASP.NET兼容模式的WCF中获取到上下文,普通的WCF需要使用OperationContext)

以下代码分别解决问题1和问题2:
WebOperationContext
.Current.OutgoingResponse.ContentType = "application/json; charset=utf-8";
WebOperationContext
.Current.OutgoingResponse.Headers.Add("Content-Encoding""gzip");


原文地址:https://www.cnblogs.com/Xrinehart/p/1809841.html