最近在研究基于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");


 

 

相关文章:

  • 2021-11-10
  • 2022-12-23
  • 2022-03-06
  • 2021-07-12
  • 2022-12-23
  • 2021-11-14
  • 2021-06-16
  • 2022-12-23
猜你喜欢
  • 2021-07-23
  • 2021-07-27
  • 2022-12-23
  • 2021-08-30
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案