Попередження типу MIME в хромі для зображення PNG


115

Щойно запустив мій сайт у хромі та надихаючи, він придумує це попередження для кожного мого .png зображення:

Resource interpreted as image but transferred with MIME type application/octet-stream.

Хтось бачив це раніше?

З повагою


Це трапляється і для мене, але лише на моїй машині розробки. Ви коли-небудь знаходили пояснення?
— БрайанФінкель

Чи можна змінити типи MIME в Кассіні? Схоже, ігноруються <staticContent>налаштування в <system.webServer>розділі в web.config.
— травіс

1
чому я не можу бути тим, хто має 78 заявок за ту ж проблему? завжди занадто пізно ....
— Скотт Селбі

2
майже на півтора року; o)
— Muleskinner

Щойно я виявив, що ви можете утримувати клавішу управління та вибирати лише помилки, налагодження та попередження. Таким чином ваш журнал не захаращений помилками типу mime під час налагодження, але ви бачите все інше. Дуже зручно.
— Адвокат диявола

Відповіді:


84

Я зіткнувся з цим під час запуску програми ASP.NET WebForms за допомогою сервера розвитку ASP.NET.

Я підозрюю, що щось подібне станеться, якщо ви також використовуєте IIS Express як ваш сервер (VS 2010 SP1).

Я вирішив свою проблему локально, відредагувавши параметри проекту (в Інтернеті) і змінивши з сервера розвитку ASP.NET на IIS на моїй локальній машині. Я бачу, що PNG вже був визначений правильно як тип MIME зображення, і коли я потрапив на свій локальний сервер IIS, він обслуговує файл правильного типу.


11
Використовуючи IIS Express, на зображеннях PNG немає попередження типу MIME. Це в основному стандарт IIS 7.5 у більш портативному вигляді (а стандартний IIS не має проблем із обслуговуванням PNG). Я просто закрутив новий проект, підтвердив попередження в Кассіні (сервер розробників), встановив його на IIS Express і підтвердив, що попередження пройшло.
— патрон

Дивна річ, з якою я стикався, - це те, що я створив програму MVC ASP.NET 4, і вона добре працює, завантажуючи файли png у Кассіні. Я оновив додаток MVC ASP.NET 1 до 4, і я зіткнувся з цією проблемою в Кассіні з тими ж файлами png. Будь-які ідеї?
— МетБ

1
@MattB - Я пропоную порівнювати конфігураційні файли (csproj та web.config) між вашим свіжим проектом MVC4 та оновленим набік у текстовому редакторі. Моя перша здогадка - це посилання на збірку або подібне, яке не було оновлено автоматично. Якщо це складніше, ніж ви, можливо, ви захочете відкрити нове запитання та включити більше деталей.
— Стефан Мохр

@StefanMohr Дякую за вашу відповідь, вибачте за пізнє повернення. Я зробив порівняння обох і не натрапив на все, що виглядало незвично. Я навіть зайшов так далеко, щоб внести необхідні зміни і в csproj, і в web.configs, щоб зробити їх ідентичними новоствореному проекту ASP.Net MVC 4, такої удачі немає. Зрештою, я просто створив новий проект і переніс все до нового проекту.
— МетБ

Веб-сайт розміщений на Azure, і я отримую цю докучливу помилку під час упаковки консолі.
— Shimmy Weitzhandler

4

Це попередження говорить про те, що ваш веб-сервер не налаштований для надсилання правильних метаданих типу MIME для зображень PNG. Вам, мабуть, слід звернутися до адміністратора вашого веб-сервера і попросити його встановити правильне відображення MIME


3
@JimG Якщо ви адміністратор веб-сервера, ви, ймовірно, знайдете відповідь на веб-сайті сестри для веб-майстрів
— Rowland Shaw

+1 Це найбільш описова і корисна відповідь. Поняття не маю, чому це так знищено.
— Сер Кріспалот

@JimG. Якщо ви були адміністратором, ви скажете, яким веб-сервером користуєтесь, або запитаєте на сайті веб-майстрів
— Rowland Shaw

Погоджена, найкорисніша відповідь. Не зрозумів @JimG. downvote.
— Anoyz

4

Я додав таких типів у .htaccess (AddType зображення / тип розширення), тобто

AddType image/png cur
AddType image/svg+xml svg svgz

2

Звичайно вище рішення ідеальні. Тільки щоб уникнути попереджень і для чистої консолі я зробив наступні зміни в своєму коді. (що теж лише для сервера розробки ASP.NET) Я написав додатковий обробник для цього:

PNGHandler.cs

class PNGHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    { 
       if(context.Request.HttpMethod == "GET") 
       {
             string requestedFile = context.Server.MapPath(context.Request.FilePath);
             FileInfo fileinfo = new FileInfo(requestedFile);
             string contentType = "";
             if (fileinfo.Exists && fileinfo.Extension.Remove(0, 1).ToUpper() == "PNG")
             {
                   contentType = "image/png";
                   context.Response.ContentType = contentType;
                   context.Response.TransmitFile(requestedFile);
                   context.Response.End();
              }
         }
    }
}

І додав Http Handler в web.config під system.web

<system.web>
 <httpHandlers>
 <add path="*.png" verb="*" type="PNGHandler" />
 </httpHandlers>
</system.web>

0

Найшвидший спосіб спаму, який я знайшов, - це використовувати клавішу CTRL для вибору помилок, попереджень та налагодження замість усіх.

Усі: введіть тут опис зображення

Помилки, попередження та налагодження: введіть тут опис зображення


0

Я вирішив цю проблему, включивши статичний вміст на панелі керування > Програми та функції > Увімкнення та вимкнення функцій Windows > компоненти IIS > Всесвітні веб-сервіси > загальні функції HTTP

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.