WCF 传输大文件内存溢出解决方法
2022/1/23 7:04:27
本文主要是介绍WCF 传输大文件内存溢出解决方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
问题描述:
业务中案件卷宗PDF文件过大(>500M)从WCF端传输到MVC客户端 导致内存溢出。
解决方案:
参考WCF官方文档 如何:启用流处理 - WCF | Microsoft Docs
启动大文件流传输模式 配置绑定 BasicHttpBinding的属性
MessageEncoding = WSMessageEncoding.Mtom; TransferMode = TransferMode.Streamed;
Wcf端代码
public Stream Send(string ajid, string jzfl) { Stream res = new MemoryStream('你的byte数组'); res.Seek(0, SeekOrigin.Begin); return res; }
客户端代码
使用stream copyto接收就不会导致内存溢出
public static byte[] GetDocContent_File_stream(string ajid, string jzfl) { byte[] bytes = null; Stream stream = new MemoryStream(); var client = WcfProxy<ISendStreamService>.Get("SendStreamServiceV2"); client.Using(channel => stream = channel.GetDocContent_File(ajid, jzfl)); using (MemoryStream res = new MemoryStream()) { stream.CopyTo(res); bytes = res.ToArray(); } return bytes; }
这篇关于WCF 传输大文件内存溢出解决方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享