MemoryStream 的 ReadTimeout 异常

ReadTimeout exception with MemoryStream

下面的方法抛出这个异常

System.IO.Stream)(ms)).ReadTimeout threw an exception of type System.InvalidOperationException'

这是方法:

private static byte[] ImageToByteArraybyMemoryStream(Bitmap bmp)
{
    using (MemoryStream ms = new MemoryStream()) {
        bmp.Save(ms, bmp.RawFormat);        
        return ms.ToArray();
    }
}

然而,这个错误并不是一直都会发生。我将尝试简短地解释会发生什么:

我刚刚用谷歌搜索 "generic gdi+ error" 其他人也遇到了 bmp.Save 方法的问题。他们的解决方法是从您要保存的位图创建一个新位图,然后保存此副本。

...
Bitmap copy = new Bitmap(bmp); 
copy.Save(ms, copy.RawfFormat);
...

也许这对你也有效,我不能告诉你这个错误的原因,它在其他网站上被称为错误。

Other Post discussing this Problem

我遇到了这个问题,花了一段时间才明白,上传图片的对象并没有释放其定位的内存并锁定它!并且垃圾回收没有处理该对象,因此 API 无法流式传输图像。 不知何故它第一次工作然后它会引发错误。

解决方法: 我使用 HttpPostFileBase 上传图片,完成后我将其设置为 null

就是这样!