2010-12-06 21 views
0

Nous obtenons cette exception étrange lorsque vous essayez de créer un BitmapDecoder à partir d'un flux de réponse ASP.Net. Ceci est la ligne de code qui lève l'exception:Besoin de conseils pour résoudre System.Runtime.InteropServices.COMException (0x88982F72)

BitmapDecoder dec = BitmapDecoder.Create(
    Request.Files[0].InputStream, 
    BitmapCreateOptions.PreservePixelFormat, 
    BitmapCacheOption.OnLoad); 

Voici quelques informations sur le fichier en cours de téléchargement:

Nom du fichier: statement.jpg bancaire, longueur du contenu: 266041, Type Mime: image/jpeg

Ceci est la trace de pile d'exception:

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) 

est-ce que toute Quelqu'un a des idées sur la façon dont nous pouvons empêcher cela de se produire?

+0

avez-vous essayé celui-ci: http://forums.asp.net/p/1219504/2171553.aspx? – Andrey

+0

Ce n'est pas un RPC, et le COM HRESULT est différent .. – Amy

+0

En outre, cela n'arrive pas à chaque fois. Quelques fois par jour, sur une centaine de téléchargements réussis. – Amy

Répondre

1

0x88982f72 est actuellement WINCODEC_ERR_STREAMREAD (à partir de Codec Error Codes), qui est en effet "Impossible de lire dans le flux".

Si le flux vient du "monde sauvage" (aka: Internet), cela peut signifier que c'est ... juste une poubelle ou un bidouillage. Si vos propres tests fonctionnent bien et ne présentent pas ce problème, je pense qu'il est juste de gérer cette erreur spécifique et échouer gracieusement.

+0

+1 Vous pouvez demander à l'utilisateur de réessayer comme une manipulation gracieuse. – Andrey