我收到了这个错误
ReadTimeout = '((System.IO.Stream)(ms)).ReadTimeout' threw an exception of type 'System.InvalidOperationException'.
我的代码是。
byte[] imageBytes = Convert.FromBase64String(img);
MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length); //Problem generates here//
谢谢..
答案 0 :(得分:4)
仅当流支持超时时,您才能使用ReadTimeout / WriteTimeout属性。 您可以通过CanTimeout属性进行检查。如果CanTimeout属性返回false,则对这些属性的所有访问都应该引发InvalidOperationException。
答案 1 :(得分:0)
我使用了以下代码,我需要将MemoryStream用作电子邮件附件:
string filename=@"C:\images\myimage.img"
MemoryStream result = new MemoryStream();
MemoryStream source = new MemoryStream(File.ReadAllBytes(filename));
source.WriteTo(result);
答案 2 :(得分:-1)
必须覆盖ReadTimeout
属性,它会在基础System.IO.Stream
类中抛出System.InvalidOperationException
错误by design。
解决方法是在读取超时时不将 ms
强制转换为基类型:
int readTimeout = ms.ReadTimeout;
击> <击> 撞击>
编辑:发布前没有检查.. MemoryStream也没有覆盖该属性 - 意味着没有实现此类流的超时。
您必须使用覆盖ReadTimeout
属性的Stream类的其他实现,或编写您自己的实现。
答案 3 :(得分:-2)
您应该注意数据库中的图像类型,如果图像太大,则必须使用LONGBLOB而不是BLOB。