방금 내 사이트를 크롬으로 실행했는데 놀랍게도 각 .png 이미지에 대해 다음 경고가 표시됩니다.
Resource interpreted as image but transferred with MIME type application/octet-stream.
전에 본 사람 있나요?
문안 인사
<staticContent>
설정 을 무시하는 것 같습니다 <system.webServer>
.
방금 내 사이트를 크롬으로 실행했는데 놀랍게도 각 .png 이미지에 대해 다음 경고가 표시됩니다.
Resource interpreted as image but transferred with MIME type application/octet-stream.
전에 본 사람 있나요?
문안 인사
<staticContent>
설정 을 무시하는 것 같습니다 <system.webServer>
.
답변:
ASP.NET 개발 서버를 사용하여 ASP.NET WebForms 앱을 실행하는 동안이 문제가 발생했습니다.
IIS Express를 서버로 사용하는 경우에도 비슷한 일이 발생할 것이라고 생각합니다 (VS 2010 SP1).
프로젝트 설정 (웹 아래)을 편집하여 로컬에서 문제를 '해결'하고 로컬 컴퓨터의 ASP.NET 개발 서버에서 IIS로 변경했습니다. PNG가 이미 이미지 MIME 유형으로 올바르게 정의되었으며 실제로 로컬 IIS 서버에 도달했을 때 올바른 유형의 파일을 제공하고 있음을 알 수 있습니다.
이 경고는 웹 서버가 PNG 이미지에 대한 올바른 MIME 유형 메타 데이터를 보내도록 구성되지 않았 음을 나타냅니다. 웹 서버 관리자에게 문의하여 올바른 MIME 매핑을 설정하도록 요청해야합니다.
.htaccess (AddType 이미지 / 유형 확장)에 이와 같은 유형을 추가했습니다.
AddType image/png cur
AddType image/svg+xml svg svgz
물론 위의 솔루션은 완벽합니다. 경고를 피하고 깨끗한 콘솔을 위해 코드를 변경했습니다. (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();
}
}
}
}
그리고 system.web의 web.config에 Http Handler를 추가했습니다.
<system.web>
<httpHandlers>
<add path="*.png" verb="*" type="PNGHandler" />
</httpHandlers>
</system.web>