【发布时间】:2010-12-07 01:52:30
【问题描述】:
在尝试从 ASP.Net 响应流创建 BitmapDecoder 时,我们遇到了这个奇怪的异常。这是引发异常的代码行:
BitmapDecoder dec = BitmapDecoder.Create(
Request.Files[0].InputStream,
BitmapCreateOptions.PreservePixelFormat,
BitmapCacheOption.OnLoad);
以下是正在上传的文件的一些信息:
文件名:bank statement.jpg,内容长度:266041,Mime 类型:image/jpeg
这是异常堆栈跟踪:
System.IO.IOException: Cannot read from the stream. --->
System.Runtime.InteropServices.COMException (0x88982F72):
Exception from HRESULT: 0x88982F72
--- End of inner exception stack trace ---
at System.Windows.Media.Imaging.BitmapDecoder.SetupDecoderFromUriOrStream(Uri uri, Stream stream, BitmapCacheOption cacheOption, Guid& clsId, Boolean& isOriginalWritable, Stream& uriStream, UnmanagedMemoryStream& unmanagedMemoryStream, SafeFileHandle& safeFilehandle)
at System.Windows.Media.Imaging.BitmapDecoder.CreateFromUriOrStream(Uri baseUri, Uri uri, Stream stream, BitmapCreateOptions createOptions, BitmapCacheOption cacheOption, RequestCachePolicy uriCachePolicy, Boolean insertInDecoderCache)
at System.Windows.Media.Imaging.BitmapDecoder.Create(Stream bitmapStream, BitmapCreateOptions createOptions, BitmapCacheOption cacheOption)
有人对我们如何防止这种情况发生有任何想法吗?
【问题讨论】:
-
这不是 RPC,COM HRESULT 不同..
-
另外,它不会每次都发生。一天几次,在 100 次成功上传中。
-
您不能先将文件本地保存在临时文件夹中,然后在 BitmapDecoder 中使用它。 bitmapdecoder 是你的组件吗?
-
抱歉,我在发布后看到了您的回复。是否有可能有时在上传完成之前关闭/中断流,因此它会在中途中断读取。你怎么看?