当尝试从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)
有没有人对我们如何防止这种情况发生任何想法?
答案 0 :(得分:1)
0x88982f72实际上是WINCODEC_ERR_STREAMREAD(来自Codec Error Codes),实际上是“无法从流中读取”。
如果流来自“狂野世界”(又名:互联网),它可能意味着它只是垃圾或黑客试探。如果您自己的测试工作正常并且没有出现此问题,我认为只处理此特定错误并且优雅地失败是公平的。