ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

WCF 传输大文件内存溢出解决方法

2022-01-22 21:32:33  阅读:205  来源: 互联网

标签:MemoryStream stream res 内存 jzfl WCF 溢出 string


问题描述:

业务中案件卷宗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;
}

 

标签:MemoryStream,stream,res,内存,jzfl,WCF,溢出,string
来源: https://www.cnblogs.com/xwhqwer/p/15835101.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有