Ostrzeżenie typu MIME w chrome dla obrazów png

115

Właśnie uruchomiłem moją witrynę w Chrome i, co zaskakujące, pojawia się to ostrzeżenie dla każdego z moich obrazów .png:

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

Czy ktoś to widział wcześniej?

pozdrowienia

Muleskinner
źródło
Dzieje się tak również w przypadku mnie, ale tylko na moim komputerze deweloperskim. Czy kiedykolwiek znalazłeś wyjaśnienie?
BrianFinkel
Czy istnieje sposób na zmianę typów MIME w Cassini? Wydaje się, że ignoruje <staticContent>ustawienia w <system.webServer>sekcji w pliku web.config.
Travis
1
dlaczego nie mogę być tym, który ma 78 głosów za za ten sam problem? zawsze za późno ....
Scott Selby
2
prawie 2 late roku spóźnienie; o)
Muleskinner
Właśnie odkryłem, że możesz przytrzymać klawisz Ctrl i wybrać tylko błąd, debugowanie i ostrzeżenie. W ten sposób Twój dziennik nie jest zaśmiecony błędami typu MIME podczas debugowania, ale widzisz wszystko inne. Bardzo poręczne.
Devil's Advocate

Odpowiedzi:

84

Napotkałem to podczas uruchamiania aplikacji ASP.NET WebForms przy użyciu serwera deweloperskiego ASP.NET.

Podejrzewam, że coś podobnego stanie się, jeśli użyjesz IIS Express jako serwera (VS 2010 SP1).

„Rozwiązałem” mój problem lokalnie, edytując ustawienia projektu (w sieci Web) i zmieniając program ASP.NET Development Server na IIS na moim komputerze lokalnym. Widzę, że PNG został już poprawnie zdefiniowany jako typ MIME obrazu i rzeczywiście, kiedy trafiam na mój lokalny serwer IIS, wyświetla plik z odpowiednim typem.

Stefan Mohr
źródło
11
W przypadku korzystania z usług IIS Express w obrazach PNG nie ma ostrzeżenia o typie MIME. Jest to w zasadzie standardowe IIS 7.5 w bardziej przenośnej formie (a standardowe IIS nie mają problemów z obsługą plików PNG). Właśnie uruchomiłem nowy projekt, potwierdziłem ostrzeżenie w Cassini (serwerze deweloperskim), przestawiłem na IIS Express i potwierdziłem, że ostrzeżenie zniknęło.
patridge
Dziwną rzeczą, z którą się spotkałem, jest to, że stworzyłem aplikację MVC ASP.NET 4 i działa ona dobrze, ładując pliki png w Cassini. Zaktualizowałem aplikację MVC ASP.NET 1 do 4 i napotykam ten problem w Cassini z tymi samymi plikami png. Jakieś pomysły?
MattB
1
@MattB - proponuję porównać pliki konfiguracyjne (csproj i web.config) między Twoim świeżym projektem MVC4 a zaktualizowanym jednym obok siebie w edytorze tekstu. Moje pierwsze przypuszczenie jest takie, że istnieje odwołanie do zestawu lub podobne, które nie zostało automatycznie uaktualnione. Jeśli jest to bardziej skomplikowane, możesz otworzyć nowe pytanie i dołączyć więcej szczegółów.
Stefan Mohr
@StefanMohr Dziękuję za odpowiedź, przepraszam za późny powrót. Zrobiłem porównanie obu i nie natrafiłem na nic, co wyglądałoby niecodziennie. Posunąłem się nawet do tego, że dokonałem niezbędnych zmian zarówno w csproj, jak i web.config, aby były identyczne z nowo utworzonym projektem ASP.Net MVC 4, bez szczęścia. Ostatecznie właśnie stworzyłem nowy projekt i przeniosłem wszystko do nowego projektu.
MattB
Witryna jest hostowana na platformie Azure i pojawia się ten irytujący błąd podczas pakowania konsoli.
Shimmy Weitzhandler,
4

To ostrzeżenie informuje, że serwer WWW nie jest skonfigurowany do wysyłania metadanych typu MIME dla obrazów PNG. Prawdopodobnie powinieneś skonsultować się z administratorem swojego serwera WWW i poprosić go o ustawienie prawidłowego mapowania MIME

Rowland Shaw
źródło
3
@JimG Jeśli jesteś administratorem serwera WWW, prawdopodobnie znajdziesz odpowiedź na siostrzanej stronie dla webmasterów
Rowland Shaw
+1 To najbardziej opisowa i użyteczna odpowiedź. Nie mam pojęcia, dlaczego tak bardzo go odrzucono.
Sir Crispalot,
@JimG. Gdybyś był administratorem, powiedziałbyś, z jakiego serwera WWW korzystasz, lub zapytałbyś na stronie o webmasterów
Rowland Shaw
Zgoda, najbardziej użyteczna odpowiedź. Nie rozumiem @JimG. głos przeciw.
Anoyz
4

Dodałem takie typy w .htaccess (rozszerzenie obrazu / typu AddType) tj

AddType image/png cur
AddType image/svg+xml svg svgz
Waqar Alamgir
źródło
2

Oczywiście powyższe rozwiązania są doskonałe. Aby uniknąć ostrzeżeń i dla czystej konsoli, zrobiłem po zmianie w moim kodzie. (to też tylko dla ASP.NET Development Server) Napisałem do tego dodatkowy program obsługi:

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();
              }
         }
    }
}

I dodano Http Handler w web.config pod system.web

<system.web>
 <httpHandlers>
 <add path="*.png" verb="*" type="PNGHandler" />
 </httpHandlers>
</system.web>
Vishal Vaishya
źródło
0

Najszybszym sposobem obejścia znalezionego przeze mnie spamu jest użycie klawisza CTRL do wybrania opcji Błędy, Ostrzeżenia i Debugowanie zamiast wszystkich.

Wszystko: wprowadź opis obrazu tutaj

Błędy, ostrzeżenia i debugowanie: wprowadź opis obrazu tutaj

Adwokat diabła
źródło
0

I już rozwiązał ten problem poprzez umożliwienie statyczny w Panel sterowania > Programy i funkcje > Włącz funkcje systemu Windows lub wyłączyć > IIS komponenty > World Wide Web Services > Wspólne cechy HTTP

biglazypanda
źródło