我有一个带有WebMethod的标准,它接受一个字节数组,然后执行一个
[WebMethod(true)]
WriteFile(byte[] Data, string FilePath)
{
File.WriteAllBytes(FilePath, Data);
}
如果此进程被传递给一个大文件,例如2 meg,它将使用以下错误消息进行轰炸:
系统资源不足,无法完成所请求的服务
看看我得到的堆栈跟踪:
我已经尝试了所有显而易见的事情,比如设置maxrequestlength和将超时执行到更现实的设置:
<httpRuntime maxRequestLength="409600" executionTimeout="900"/>
上面提到的事情似乎还是失败了。如果你发送一个较小的文件,它会保存到磁盘上。所以问题要么是文件大小,要么是时间。
有谁知道我还能做些什么来解决这个问题吗?
谢谢
戴夫
发布于 2009-10-01 02:08:24
我知道您没有达到这个大小的文件,但也要注意,在写入网络路径时,File.WriteAllBytes的限制为64 to -请参阅此连接问题。
发布于 2012-10-17 08:06:45
在使用File.WriteAllBytes时,我收到了类似的错误消息,并将代码更改为使用FileStream,如下例所示。根据其他人的评论,我猜FileStream对内存的影响较小。
using (FileStream stream = new FileStream(FilePath, FileMode.Create, FileAccess.ReadWrite))
{
stream.Write(Data, 0, Data.Length);
stream.Close();
}
发布于 2009-06-15 11:22:00
我不认为这可能是由于maxRequestLength。代码位于FileStream.Write的中间,所以很久以前就没有接收数据的问题了。通过查看调试器中的Data.Length来确认这一点。
为什么你有WebMethod(真的)?试试WebMethod,看看会发生什么。
https://stackoverflow.com/questions/995320
复制