将字节数组转换为Stream时,ReadTimeout引发exception
我收到了这个错误
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//
谢谢..
仅当流支持超时时,才可以使用ReadTimeout / WriteTimeout属性。 您可以通过CanTimeout属性进行检查。 如果CanTimeout属性返回false,则对这些属性的所有访问都应引发InvalidOperationException。
我使用以下代码,我需要将MemoryStream用作电子邮件附件:
string filename=@"C:\images\myimage.img" MemoryStream result = new MemoryStream(); MemoryStream source = new MemoryStream(File.ReadAllBytes(filename)); source.WriteTo(result);
必须重写ReadTimeout
属性,在基本System.IO.Stream
类中,它总是会因设计而引发System.InvalidOperationException
错误。
解决方法是在读取超时时不将 ms
转换为基类型:
int readTimeout = ms.ReadTimeout;
编辑:发布之前没有检查.. MemoryStream也没有覆盖该属性 – 意味着没有实现此类流的超时。
您必须使用实际覆盖ReadTimeout
属性的Stream类的其他实现,或者编写您自己的实现。
您应该注意数据库中的图像类型,如果图像太大,则必须使用LONGBLOB而不是BLOB。