IIS가 특정 파일 확장자를 제공 할 수 없음


9

.JSON 파일을 제공하고 있지만 파일이 존재하더라도 파일에 액세스하면 IIS에서 404 오류가 계속 발생합니다. 파일 중 하나의 이름을 .JS로 바꾸려고 시도했지만 작동합니다.

어떤 설정으로 인해이 문제가 발생할 수 있습니까?

답변:


20

기본적으로 W2K3 이상의 IIS는 MIME 형식이 아닌 파일을 제공하지 않습니다 (404 오류 대신).

MIME 형식을 IIS에 추가해야 해당 형식의 파일을 제공 할 수 있습니다. 사이트 수준 또는 서버 수준에서 설정할 수 있습니다.

전체 서버에 대해이를 설정하려면 다음을 수행하십시오.

  • IIS 관리자에서 서버의 속성을 열고 MIME 형식을 클릭하십시오.
  • "신규"를 클릭하십시오. 확장명으로 "JSON"을 입력하고 MIME 유형으로 "application / json"을 입력하십시오.

새 MIME 형식을 추가하고 웹 사이트를 다시 시작하지만 여전히 404입니다. 어쨌든 이것이 문제 중 하나 일 수 있습니다.
Adrian Godong

흠. 변경 한 내용을 다시 확인하십시오. "파일 이름을 바꾸고 작동했습니다"증상은 이 동작 의 고전적인 지표입니다.
Evan Anderson

트리플은 그것을 확인했다. 전체 서버를 다시 시작할 필요가 없다고 가정합니다.
Adrian Godong

흠 ... 그럼 어떻게해야할지 말해 주려고 노력하고 있습니다. 방금 Windows Server 2003 SP2의 깨끗한 VM에서 직접 수행했습니다. IIS를 설치하고 "C : \ inetpub \ wwwroot"에 "foo.json"파일을 만들고 브라우저에서 " localhost / foo.json "을 눌렀을 때 404가 있는지 확인하고 ".JSON에 대한 MIME 유형을 추가했습니다. "/"application / json "사이트로 이동 한 다음 여전히 열려있는 IE 창으로 이동하여 F5를 누르고 페이지로드를 확인했습니다. 나는 당신도 다른 무언가를 가지고 있다고 생각합니다.
Evan Anderson

1
또한 웹 서비스 확장 기능을 통해이 작업을 수행 할 수 있는지 확인해야했습니다.
gandalf

3

나는 같은 문제가 있었다. IIS는 MIME 형식 필터링이라고합니다. 특정 파일 확장자의 MIME 형식을 모르면 404 오류를 반환합니다.

IIS <7 : 사이트 (또는 서버) 속성을 엽니 다. HTTP- 헤더 탭을 클릭 하십시오. MIME 유형 버튼을 클릭하십시오 . MIME 유형 "application / octet-stream"으로 파일 유형 *를 추가하십시오.

IIS 7의 경우 : IIS 관리자를 엽니 다. 서버 또는 웹 사이트를 클릭하십시오 . MIME 유형 기능 아이콘을 두 번 클릭하십시오 . 작업 창에서 추가를 클릭 합니다. "파일 이름 확장자"상자를 *로 채우고 MIME 유형 상자를 "application / octet-stream"으로 채우십시오.


2

나는 MIME 타입을 추가 .json- text/jsonIIS에서 사이트가 텍스트로 브라우저에서 볼 수 있습니다.


이! 이! 이!
Tschallacka

1

답변을 하나의 일반적인 답변으로 통합하려면 :

여기 경고가 온다 :

  • 하지 않는 스크립트 처리기 (예 : 액티브 콘텐츠 엔진, ASP / ASPX / PHP / 자바 / ISAPI / 등)가 그들과 관련되어
    • 이것은 IIS가 정적 파일이 아닌 활성 컨텐츠 로 처리 함을 의미 합니다.
  • 모든 확장이 제공하는 활성 컨텐트 파일은 웹 서비스 확장 제한 목록 (IIS 7의 ISAPI / CGI 제한)에서 허용 된 확장명을 가져야합니다.
    • IIS 7의 활성 콘텐츠 형식에서 404를 얻는 경우 처리기가 설치되지 않았 음을 의미 할 수도 있습니다. 따라서 해당 파일 확장명을 지원하는 구성 요소를 실제로 설치해야합니다 (예 : .aspx 파일이 404, 아마도 ASP.Net이 설치되어 있지 않을 것입니다)

이런 종류의 문제가 발생하면 웹 사이트의 웹 로그 파일을 열고 하위 상태 코드 (예 : 404 3)를 확인하여 웹 사이트가 IIS 6 용 콘텐츠를 제공하지 않는 이유를 정확히 확인하십시오.

  • 실패한 요청 추적 사용
  • (또는 로컬 콘솔의 자세한 오류)

IIS 7에서.


이 "캐비티"는 의미가 없습니다 : "... 이것은 IIS가 정적 파일이 아닌 활성 콘텐츠로 처리한다는 것을 의미합니다"Web.config는 json 파일을 정적으로 선언합니다 : <staticContent> <mimeMap fileExtension = ". json"mimeType = "application / json"/> </ staticContent>

"IIS는 스크립트 처리기가 연결되어 있지 않으면 MIME 형식이없는 정적 파일을 제공하지 않습니다."는 여전히 (IMO) 실제 명령문으로 작동합니다. 누군가가 서비스를 제공 할 수없는 경우, 구성 파일에이 정의가없는 것처럼 들립니다. 아마도 Windows 사본이 최신 버전일까요?
TristanK

0

나는이 문제도 가지고 있었고 문제는 json 파일이 저장된 폴더에 대한 파일 권한으로 판명되었습니다. 나는 비슷한 질문에 대답했다 .

이 사람들은 모두 MIME 유형을 추가해야한다고 말하는 것이 맞습니다.

MIME 형식은 서버에서 파일 확장명을 사용하도록 설정하고 매핑 처리기는 IIS에서 파일로 수행 할 작업을 알려줍니다.

따라서 매핑 처리기추가해야하며 매핑 을 처리하려면 Classic Asp 라는 Windows 기능이 설치되어 있어야 합니다.

매핑 처리기를 추가하는 방법은 다음과 같습니다.

  1. IIS7 관리자 열기
  2. IIS 서버의 속성으로 이동하십시오 (또는 전역 설정을 원하지 않는 경우 사이트 만 해당).
  3. 클릭 Handler Mappings
  4. 클릭 Add a Script Map
  5. 속성을 입력하십시오 :
    • 요청 경로 : *.json
    • 실행 가능 : C:\WINDOWS\system32\inetsrv\asp.dll
    • 이름 : JSON(원하는 것으로 부를 수 있습니다)
  6. 확인을 클릭하면 완료됩니다. 작동하기 시작하고 IIS를 재설정 할 필요가 없습니다.

또한 일부 사람들은`응용 프로그램 / X-자바 스크립트를 사용하는 당신에게 말할 것이다 '마임 형 응용 프로그램으로,하지만, JSON은 자바 스크립트 아닌 자체 (그것은 이다 그러나, 일부) 등이 있어야한다'대신 응용 프로그램 / JSON ' JSON에 대한 IANA 등록 미디어 유형이므로.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.