需要有关解决System.Runtime.InteropServices.COMException(0x88982F72)的建议

时间:2010-12-06 17:27:45

标签: c# asp.net wpf com

当尝试从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)

有没有人对我们如何防止这种情况发生任何想法?

1 个答案:

答案 0 :(得分:1)

0x88982f72实际上是WINCODEC_ERR_STREAMREAD(来自Codec Error Codes),实际上是“无法从流中读取”。

如果流来自“狂野世界”(又名:互联网),它可能意味着它只是垃圾或黑客试探。如果您自己的测试工作正常并且没有出现此问题,我认为只处理此特定错误并且优雅地失败是公平的。