3

У меня есть подпрограмма генерации эскизов, которую я создал с помощью WIC для .NET-приложения. Он отлично работает в течение прошлого года, но мы просто перешли на новый сервер.WIC CreateDecoderFromStream возвращает 0x88982F50 миграции почтового сервера

Старый сервер был W2k8 R2 Enterprise SP1 Новый сервер является W2k8 Standard SP1

Вот код, который не удается

Public Sub New(ByVal PictureData As Byte()) 
     Me.WICFactory = New WICImagingFactory() 

     Dim InputStream As IWICStream = WICFactory.CreateStream() 
     InputStream.InitializeFromMemory(PictureData, PictureData.Length) 

     InputDecoder = WICFactory.CreateDecoderFromStream(InputStream, Nothing, WICDecodeOptions.WICDecodeMetadataCacheOnDemand) 

     '^===== This line throws the HRESULT 0x88982F50 

Я проверил и данные картина достоверные данные. Точно такое же изображение отлично работает, если я запускаю код на старом сервере.

ответ

1

Проблема была в том, что я запускал Server 2008 SP1. Как описано в вопросе this, вам необходимо применить обновление платформы до Server 2008 (post SP2) до того, как WIC будет доступен. (Доступно изначально в R2)

1

Это WINCODEC_ERR_COMPONENTNOTFOUND. Это означает, что WIC не смог найти класс декодера, который зарегистрирован для типа файла в вашем потоке.

Вот что я хотел бы предложить:

На старом сервере, где он работает, распечатайте значение InputDecoder.GetDecoderInfo() GetCLSID(), и, возможно, также GetAuthor/GetFriendlyName.. Если это один из встроенных CLSID, перечисленных here, тогда WIC на вашей новой машине, скорее всего, сломан. В противном случае вам нужно будет выяснить, откуда пришел декодер, который вы используете на старой машине, и установить его на новую машину.

Или просто посмотрите на декодер для любого типа файла, который у вас есть.

Смежные вопросы