将字节数组转换为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。