最近写了个winform的项目,里面有个功能是从SharePoint文档库中同步文件到本地。所以,毫无疑问,首先想到的就是用SharePoint 的 web service来实现了,即Copy.asmx,并调用Copy.GetItem()方法来实现。

代码如下:

Download documents from SharePoint Document Library        public static void CopyfileToLocal(string strSiteUrl,string strFileUrl, string strFilePath){using (Copy copyFile = new Copy()){if (AdminNwc == null){return;}copyFile.Credentials = AdminNwc;copyFile.Url = strSiteUrl.Trim('/') + @"/_vti_bin/Copy.asmx";FieldInformation fileInfo = new FieldInformation();FieldInformation[] fileInfoArray = { fileInfo };byte[] fileContents;copyFile.GetItem(strFileUrl, out fileInfoArray, out fileContents);}}

代码是完美的,同步文件也是正常的。但是... .. 正常仅限与小文件,对于大文件(测试了个200M的文件)却抛了异常,如下所示:

唉,实在是禁不起检验啦,没办法,只得另谋出路。

既然异常是:System.OutOfMemoryException 那么,就是内存溢出之类的问题咯,在网上搜了下,原来在使用 web service的copy.asmx的方法下载文档时,的确有内存溢出的问题。所以立马更换另一种方法解决问题,代码如下:

Download documents from SharePoint Document Librarypublic static void CopyStream(Stream input, Stream output){ byte[] buffer = new byte[8 * 1024]; int len; while ((len = input.Read(buffer, 0, buffer.Length)) > 0) { output.Write(buffer, 0, len); } } protected void Page_Load(object sender, EventArgs e){string url = "Http://moss2007:1234/documentlibrary/test.jpg";WebRequest request = WebRequest.Create(new Uri(url, UriKind.Absolute));request.UseDefaultCredentials = true;WebResponse response = request.GetResponse();Stream fs = response.GetResponseStream() as Stream;using (FileStream localfs = File.OpenWrite(@"c:\temp\test.jpg")){CopyStream(fs, localfs);}}

很神奇,问题解决了。

感谢网上的大神帮忙找资料,助我度过难关,相关的两个帖子地址如下:

http://bbs.csdn.net/topics/390407269

http://q.cnblogs.com/q/48101/

<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>

SharePoint下载大文件失败 异常信息: system.OutOfMemoryException相关推荐

  1. php 7.0 readfile_php readfile下载大文件失败的解决方法

    本文实例讲述了php readfile下载大文件失败的解决方法.分享给大家供大家参考,具体如下: 大文件有200多M,只下载了200K就提示下载完成,且不报错. 原因是PHP内存有限制,需要改为按块下 ...

  2. linux下载大文件失败,Linux下FTP/SFTP传输大文件总是失败的处理办法

    海外服务器,一般延迟都比较高.如果不是China Telecom/China Unicom路由直连,延迟更加的不稳定,甚至长连接会经常闪断.国内跨运营商服务器,没有BGP网关,也同样会发生这样的情况, ...

  3. php readfile 下载大文件失败

    大文件有200多M,只下载了200K就提示下载完成,且不报错. 原因是PHP内存有限制,需要改为按块下载,就是把大文件切块后逐块下载. if (file_exists($file)) {if (FAL ...

  4. Nginx下载大文件失败

    原因分析: nginx代理nginx时,前端用户请求下载文件, nginx代理会先从后端nginx拿到文件并缓存到本地,然后响应给客户端,其中与proxy buffer相关的配置项如下: proxy_ ...

  5. php下载效率不高,解决PHP下载大文件失败,并限制下载速度

    1.问题: PHP在使用readfile函数定义下载文件时候,文件不可以过大,否则会下载失败,文件损坏且不报错: 2.原因: 这个是因为readfile读取文件的时候会把文件放入缓存,导致内存溢出: ...

  6. scrapy下载大文件失败问题

    利用scrapy下载大量大尺寸图片及视频时有时会报错,显示放弃重试,用户连接时间超过180s导致失去连接 如下 Gave up retrying <GET url> (failed 3 t ...

  7. Android 开发工具类 27_多线程下载大文件

    多线程下载大文件时序图 FileDownloader.java 1 package com.wangjialin.internet.service.downloader; 2 3 import jav ...

  8. Java8环境下使用restTemplate单/多线程下载大文件和小文件

    Java8环境下使用restTemplate单/多线程下载大文件和小文件 0. 准备工作 1. 简单的下载文件 2. 单线程大文件下载 3. 多线程下载 0. 准备工作 下面使用的restTempla ...

  9. python断点续传下载_Python 3 爬虫|第12章:并发下载大文件 支持断点续传

    1. stream 流式下载大文件 1.1 stream=True 和 iter_content() 我们将继续使用 Python 3 爬虫|第3章:同步阻塞下载 所搭建的测试环境,在 Nginx 默 ...

  10. Response.WriteFile 无法下载大文件解决方法

    以前用Response.WriteFile(filename),但当遇到大文件时无法完整下载. 该方法最大的问题,它不是直接将数据抛到客户端,而是在服务器端(IIS)上缓存.当下载文件比较大时,服务器 ...

最新文章

  1. ubuntu18.04.4 录制麦克风音频
  2. mysql面试关联查询语句_MySQL百万级、千万级数据多表关联SQL语句调优
  3. AI在这张“问卷”上首次超越人类,SuperGLUE被微软谷歌两家“攻破”
  4. 为什么一定要好好睡觉?
  5. 三个容器倒水_绿茶“最忌讳”先放茶叶再倒水,想要茶味香浓,记住正确泡茶法...
  6. Android—热修复实践
  7. 实战演练!CISCO交换机端口安全一点通 (
  8. 无法启动SQL Server 2005中的SQL Server(MSSQLSERVER)服务--zt
  9. 精读《手写 SQL 编译器 - 性能优化之缓存》
  10. 发现一个厉害的关于html ui的网站 http://amazeui.org以后可能会用机会用!
  11. Python 数据结构与算法 —— 从分治的角度看快速排序、归并排序
  12. linux服务器云防火墙配置文件,Linux云服务器防火墙配置之Firewalld
  13. python tkinter画动态时钟
  14. 食品进销存十大品牌排行榜新鲜出炉,来看看哪个最适合你
  15. 外贸企业管理系统解决方案丨汇信
  16. 揭秘“菲住布渴”中运用的黑科技:除了check in、坐电梯、开门...全部刷脸之外,还有什么?
  17. 淘宝API淘口令真实url
  18. 基于STM32+PS2的智能遥控小车
  19. 怎么快速复制文件、转移文件到同一新文件夹中
  20. 西北乱跑娃 -- docker安装

热门文章

  1. 在线出境游竞品分析报告:携程、途牛和马蜂窝
  2. android 可逆加密,AndroidMD5加密算法(可逆)
  3. 依云工资查询系统升级至6.4
  4. 电脑桌面底部显示计算机图标怎么隐藏,电脑底部的任务栏如何隐藏
  5. php全套之七,php程序员工具箱
  6. java web背景颜色表,更改表行背景颜色
  7. 建立民间贷款集资合法化
  8. linux安装时路径错误,科学网—安装Linux版的hysplit及相关问题集锦-系统Centos - 周勤迁的博文...
  9. MATLAB激活时填错Windows用户名怎么办?
  10. 【显示器知识 帮新手扫盲+自我总结】