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


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.


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


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

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>

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


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.