Проблема с преобразованием .ico в массиве байтов в объект изображения в .net

Я пытаюсь добавить значки и добавить их к динамическому изображению, которое я создаю. См. StackFlair . Код веб-сайта отлично работает локально и на одном сервере виртуального хостинга. бла-бла, план бесплатного хостинга, вы получаете то, за что платите, бла-бла Моя проблема в том, что я получаю исключение из новой настройки хостинга. Это исключение происходит только для файлов .ico. Я могу нормально обрабатывать изображения .gif и .png на всех протестированных мной серверах (т. Е. изображение граватара). Я пытаюсь использовать значки избранных из сети SE, но даже http://www.google.com/favicon.ico приводит к следующему исключению.

System.ArgumentException: Параметр равен недействителен.

  • System.Drawing.Image.FromStream (поток потока, логическое значение useEmbeddedColorManagement, логическое значение validateImageData)
  • System.Drawing.Image.FromStream (поток потока)

Ниже приведены варианты кода, который я пытаюсь использовать. . Я получаю одно и то же исключение "Параметр недопустимый" для всех вариантов.

byte[] imageBytes = //pull from Image field in SQL Server
//or
byte[] imageBytes = new WebClient().DownloadData(imageUrl);


MemoryStream ms = new MemoryStream(imageBytes);
Image image = Image.FromStream(ms);
 //or
Icon icon = new Icon(ms);
Image image = icon.ToBitmap();
//or
Image image = new Bitmap(ms);

Все это прекрасно работает локально и на плохом сервере хостинга. Ни один из них не работает на сервере, на котором я хочу быть. Используя вывод трассировки, я могу убедиться, что длина массива содержит правильное количество байтов. Если я сделаю следующее, я увижу изображение, отображаемое должным образом.

Response.Clear();
Response.BinaryWrite(imageBytes);
Response.End();

Если я просматриваю массив и записываю каждое байтовое значение, вывод моего локального экземпляра идентичен серверу, на котором я получаю исключение.

Если это помогает, то сервер, на котором мой код не работает, будет сервер Windows 2003 с пакетом обновления 2.

Очевидно, фреймворк сообщает мне, что поток байтов недействителен, но все, что я проверил, проверяется. Есть идеи, почему этот конкретный сервер захлебывается файлами .ico?

12
задан Community 13 April 2017 в 12:25
поделиться