IIS7.5에서 정적 파일 핸들러가 스크립트를 제공하지 않음


130

방금 Windows 7 Home Premium 노트북에서 IIS에 첫 번째 웹 응용 프로그램을 배포하려고했습니다. 응용 프로그램을 만든 후 Classic App Pool로 변경 한 다음 해당 풀을 프레임 워크 4.0으로 설정해야했습니다. 이제 다음과 같은 오류가 발생합니다.

HTTP 오류 404.17-찾을 수 없음 요청 된 컨텐츠가 스크립트 인 것으로 보이며 정적 파일 핸들러에서 제공하지 않습니다.

요청 된 URL은 http : // localhost : 80 / pvmms / default.aspx입니다.

광범위한 인터넷 검색으로 작업 할 수있을만큼 명확하거나 명확한 정보를 얻지 못했으며 평소와 같이 전문가에게 문의했습니다.

편집 : .aspx 파일에 대한 프레임 워크 4.0 처리기 매핑이 없기 때문에 이것이 의심됩니다. 그러나 aspnet_regiis는 관리자에게 손가락을 주며 그것을 실행하려면 관리자 권한이 필요하다고 말합니다.

편집 # 2 : 모든 프레임 워크 (2 & 4, 32 및 64)를 등록했으며 이제 모두 작동합니다. .aspxaspnet_isapi 및 voila에 대한 스크립트 맵을 수동으로 추가하여 이것을 발견했습니다 . 메모리에 오류가 발생하지 않고 VS를 설치 한 후에 IIS 만 활성화하지 않으면 프레임 워크 설치가 왜 그렇게하지 않는지 이해할 수 없습니다.


또는 여기 설명 된대로 web.config
에서이

답변:


120

어쩌면 지금 너무 늦을 수도 있지만 더 자주 달리지 않아도됩니다.

aspnet_regiis.exe -i  

asp.net을 설치 한 후 어쨌든 내가 지금 할 것입니다.


17
.NET Framework와 함께 제공되는 두 가지 IIS 등록 도구가 있습니다. 하나는 표준 시스템 용이고 다른 하나는 64 비트 시스템 용입니다. Windows 폴더 내 Microsoft.NET 디렉토리의 Framework64 디렉토리에있는 64 비트 시스템 용 도구. 예를 들어 C : \ WINDOWS \ Microsoft.NET \ Framework64 \ v2.0.50727에는 IIS 등록 도구가 포함됩니다.
Matthew Lock

3
오류가 발생하면 the command is not recognized as an internal or external command. 개발자 명령 프롬프트에서 실행하십시오.
rockXrock

1
Framework64 폴더의 2.0 프레임 워크에 대해이 작업을 수행해야했습니다. @matthew Lock의 말처럼
codingNightmares

또한 2.0 및 4.0을 실행해야하는 경우 2.0을 먼저 실행하십시오.
SouthShoreAK

C : \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 (x64의 v2.0의 경우)-Framework64를 x86의 프레임 워크로 변경하고 v2. *를 v4. *로 v4의 경우 변경 (정확한 이름은 상위 폴더로 이동)
JohnLBevan

63

위의 것 외에도 WCF 지원이 필요한 경우 다음을 실행해야합니다.

c:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe -i

v3.0을 현재 프레임 워크 버전으로 바꾸십시오.


1
다른 사람들에게는 4.0 앱 풀을 사용하는 webapps에서 aspnet_regiis를 다시 실행해야한다고 생각합니다.
Tim Gabrhel

1
.Net 4의 경우 상위 디렉토리에 있습니다. 예 : C : \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ ServiceModelReg.exe -i
bytedev

57

내가 작성한 WCF 서비스에 액세스하려고 할 때 IIS 8.5에서이 오류가 발생했습니다. 서버에 WCF HTTP 활성화 기능이 설정되어 있지 않은 것으로 나타났습니다. 상자를 확인하고 iisreset 마법사를 클릭하여 작업을 시작했습니다.

Windows 기능 패널


1
이것은 IIS 8.5 및 Windows 8.1에서 효과적이었습니다. 질문에 설명 된 오류 (HTTP 404.17)를 얻는 ASHX를 활성화해야했습니다
.

감사합니다! 이것은 나를 위해 일했습니다. 그러나 필자의 경우 오래된 웹 서비스를 사용하고 있기 때문에 .NET 2.0에서 켜야했습니다.
Stefan Vasiljevic

이것은 오래된 게시물이지만 솔루션이 베이컨을 저장했습니다. 나는 이것을 다른 곳에서 백만 년 동안 발견하지 못했을 것입니다. 감사합니다.
Joe Schmucker

48

iis 7.5를 사용중인 경우

IIS 관리자로 이동하여 웹 사이트 속성을 엽니 다.

거기에 'Handler Mappings'섹션이 표시되면 해당 섹션으로 이동하여 'staticFile'을 검색하십시오.

아마도 목록의 마지막 파일 일 것입니다.

그런 다음 마우스 오른쪽 버튼으로 클릭하고 '부모로 되돌리기'를 선택하십시오.

내가 처음으로 직면하는 동안 나는 많은 시간을 낭비했지만 어쨌든 이것이 문제를 해결할 것입니다.


2
Adi가 대답 한 것처럼 :이 특공대는 모든 것을 수행합니다 : c : \ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation \ ServiceModelReg.exe -i
JDC

팁 주셔서 감사합니다 @ Kumar! IIS> 사이트> acme.com> 처리기 매핑> 부모로 되돌리기. 제 경우에는 "staticFile"뿐만 아니라 전체 도메인에 대해 수행했습니다. 이것은 나를 위해 일했으며 실행 파일 (aspnet_regiis.exe)을 실행하는 것보다 간단하고 바람직했습니다. 왜이 제안이 더 번거롭지 않습니까? =)
jiminy

화려한 팁 .. 도대체 어디에서 왔을 까? 이전 버전의 IIS에서 그것을 만난 적이 기억 나지 않습니다 ...!
Mike Gledhill

25

ASP .NET 4.5가 설치된 Windows Server 2012 에서이 문제가 발생하면 aspnet_regiis.exe를 사용할 수 없으며 역할 및 기능 추가 마법사를 통해 ASP .NET 4.5를 설치하면됩니다.

여기에 이미지 설명을 입력하십시오

서버 관리자의 오른쪽 모서리에있는 "관리"메뉴에서 "역할 및 기능 추가"메뉴 항목을 찾을 수 있습니다.


1
메뉴 항목 "역할 및 기능 추가"는 서버 관리자의 오른쪽 모서리에있는 "관리"메뉴에서 찾을 수 있습니다.
Alexander Trofimov

16

대체 텍스트

이 옵션을 확인해야한다고 가정합니다.


1
정적 콘텐츠를 제공 할 수 있는지 여부 만 설정합니다. 내 문제는 스크립트 요청이 정적 콘텐츠에 매핑되고 있다는 것입니다. 이 기능을 끄면 IIS는 페이지를 서버에 연결하지 않고 공란을 제공합니다.
ProfK

16

이 문제를 해결하여 해결했습니다. WCF Services

Programs and Features > NET Framework 4.5 Services > WCF Services> HTTP Activation node

그러나이 ENTIRE IIS 설정 구성 / 추측 / 시험판을 인정하고 접근 방법에 대한 해결책을 찾는 데 4 ~ 5 일이 소요되는이 / 시도를 보거나 시도하십시오. 완전하고 UTTER 농담입니다.

확실히, 'IIS'는 지금까지 MANKIND에서 가장 큰 신뢰도였습니다.


1
IIS에 정적 콘텐츠 기능을 활성화하기 만하면됩니다. 이것은 WCF와 관련이 없습니다.
ProfK

1
@ProfK는 해당 오류가 발생하는 이유에 따라 다르며 다른 원인으로 인해 동일한 오류가 발생합니다. WCF를 사용하도록 구성된 SVC 파일에서 오류가 발생하면 위의 문제가 해결됩니다.
JohnLBevan

LOL은 여러 사이트를 포팅하고 실제 오류 메시지가 없거나 매우 비밀스러운 5 가지 종류의 오류를 보았습니다. 예 "내부 서버 오류가 발생하여 페이지를 표시 할 수 없습니다"는 이미 존재하는 정적 컨텐츠 마임 유형을 추가했음을 의미합니다.
마이크 넬슨

15

나는 이것이 오래된 질문이라는 것을 알고 있지만 재 구축 된 Windows 8 컴퓨터에서 3.5 응용 프로그램 으로이 문제를 겪었지만 여전히이 aspnet_regiis -iru문제가 발생했으며 ASP.NET 3.5는 응용 프로그램 개발 기능에서 틱되지 않았습니다. (이미지를 게시하기에 평판이 충분하지 않습니다).


2
이미지에 @bicbmx를 사용하면 이미지를 업로드 한 후 링크를 ​​공유 할 수 있습니다 (예 : imgur.com)
superjos

12

기본적으로 응용 프로그램 용으로 생성 된 응용 프로그램 풀이 버전 2 일 가능성이 있습니다. 따라서 목록에 .svc 확장명 처리기가 표시 되어도 작동하지 않으며 정적 파일로 취급합니다. 응용 프로그램 풀 속성을 열고 버전 4로 전환하기 만하면됩니다.


8

asp.net을 다시 등록하면 문제가 해결됩니다.
여기에 이미지 설명을 입력하십시오

Visual Studio 명령 프롬프트로 이동하여
asp.net을 windows \ microsoft.net \ Framework [.Net version num] \ aspnet_regiis.exe -i로 등록하십시오.


2
aspnet_regiis.exe -i는 "이 옵션은이 버전의 운영 체제에서 지원되지 않습니다."로 응답합니다. IIS는 왜 그렇게 고통 스러운가?
Paul McCarthy

5

설정하는 Windows 8 컴퓨터에서도 이와 동일한 문제가 발생했습니다. .NET Framework 4.5를 설치하는 vs2010 이전에 vs2012를 설치했습니다. 4.0에서 실행중인 앱 풀이 있습니다. aspnet_regiis -i를 사용하여 4.0에 aspnet을 등록했는지 확인했습니다. 여전히 속임수를 쓰지 않았습니다. 그런 다음 Windows 기능을 열고 4.5에 ".NET Framework 4.5 Advanced Services"라는 집합이 추가 된 것을 알았습니다. WCF 서비스 노드와 해당 하위 노드를 활성화 한 다음 svc 끝 점이 올바르게 작동했습니다. 이것이 Windows 8로 전환하는 사람들에게 도움이되기를 바랍니다.


Server 2012, IIS8도 있습니다. 포인터를 올바른 방향으로 보내 주셔서 감사합니다. 관심이 있으신 분은 웹 서버 역할뿐만 아니라 응용 프로그램 서버 역할도 설정해야합니다. 여기에서 필요한 정보를 찾았습니다. msdn.microsoft.com/en-us/library/hh167503(v=nav.70).aspx
John

3

나는 같은 문제에 부딪쳤을 때이 질문을 우연히 발견했다. 내 문제의 근본 원인은 잘못 구성된 응용 프로그램 풀이었습니다. 4.0으로 설정해야 할 때 실수로 2.0으로 설정되었습니다. 다음 링크의 답변을 통해이 문제를 발견 할 수있었습니다. http://forums.iis.net/t/1160143.aspx


2

나는 같은 문제가 있었다. IIS에 정적 콘텐츠 기능을 추가하면 정상적으로 작동합니다.


2

동일한 오류 메시지가있는 다른 가능한 해결책이 있습니다.

.NET 4.0 웹 응용 프로그램을 새 응용 프로그램 풀에 설정하려고 할 때 정적 파일 처리기로 aspx 파일을 처리하려고한다고 말하는 이상한 오류가 발생했습니다.

어떤 이유로 IIS 관리자에서 서버 수준 의 ISAPI 및 CGI 제한 영역 에서 .NET 4.0 용 ISAPI를 사용하지 않도록 설정했습니다 . 이것을 활성화로 설정하는 것이 필요한 모든 것이 었지만 IIS 7.5 관리자는 너무 복잡하고 따라 가기 어려워서 이것을 알아내는 데 오랜 시간이 걸렸습니다.

4.0 엔진으로 처리 할 수없는 4.0 응용 프로그램이므로 정적 파일 핸들러가 기본적으로 사용되었다고 생각합니다.


2

이것을 읽는 다른 사람들을 위해 :

등록한 .Net 버전이 웹 사이트에 연결된 응용 프로그램 풀의 '기본 설정'에서 선택한 버전이 아닌 경우에 발생할 수 있습니다. 예를 들어 사이트 응용 프로그램 풀에 .Net v2.0이 선택되었지만 v4.0을 등록했습니다.


2

Windows 10 / Framework 4.7의 경우 다음 방법을 통해 HTTP 활성화를 설정해야했습니다.

  1. 제어판> 프로그램 및 기능> Windows 기능 켜거나 끄기
  2. .NET Framework 4.7 고급 서비스에서 WCF 서비스를 펼치고 WCF로 작업 할 때 필요한 HTTP 활성화 및 기타 사항을 확인하도록 선택하십시오.
  3. 확인을 클릭하고 설치를 수행 한 다음 관리 명령 프롬프트를 열고 IISRESET 명령을 실행하십시오.

1

cmd-> 오른쪽 클릭-> 관리자 권한으로 실행

C : \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_regiis.exe -i


0

IIS 관리자를 사용하여 ASP.NET 4.5가 이미 설치되어 있어도 .aspx 파일이 "처리기 매핑"아래에서 ISAPI 2.0에 매핑되었음을 알 수있었습니다. ISAPI 4.0 64 비트 용 실행 파일을 가리 키도록 편집하면 문제가 해결되었습니다.

실행 파일은 % windir % \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_isapi.dll에 있습니다.


0

클래식 응용 프로그램 풀이 .net 2.0에 할당 된 iis 7.5의 응용 프로그램에 대해이 메시지를 받았습니다. 처리기 매핑으로 이동하여 두 개의 스크립트 맵을 추가해야했습니다. 둘 다 이름을 제외하고는 동일했습니다. 하나는 svc-ISAPI-2.0-64이고 다른 하나는 svc-ISAPI-2.0입니다. 요청 경로는 .svc입니다. 실행 파일은 % SystemRoot % \ Microsoft.NET \ Framework64 \ v2.0.50727 \ aspnet_isapi.dll입니다. 나는 iis를 다시 시작했고 모두 행복했다.


0

방금 해결 한 최악의 시나리오 중 하나는 Web.config에서 충돌하는 항목이 있다는 것입니다.

내 로컬 컴퓨터에서 IIS에 .woff 확장명이 등록되어 있지 않았으므로 Web.config를 사용하여 추가했습니다. 그러나 프로덕션 서버에서 .woff는 MIME 유형을 등록했습니다. 이로 인해 응용 프로그램 수준 충돌이 발생했습니다.

재미있는 부분은 이것에 대해 오류가 기록되지 않는다는 것입니다. 추측 작업 (물론 처음).

그래서 나를 위해 해결책은 web.config에서 요소 및 / 또는 요소를 제거하는 것이 었습니다.


0

나는 같은 문제를 겪었고 방금 웹 사이트의 대상 프레임 워크 버전을 개발 된 버전으로 변경했습니다 .IIS와 동일합니다. 이것은 내 문제를 해결했습니다. 도움이 되었기를 바랍니다...

감사합니다


0

내 경우에는 응용 프로그램 풀-> 고급 설정-> 32 비트 응용 프로그램 사용 (참이어야 함)에서 여러 가지 이유가있을 수 있습니다. 이전에는 false로 설정되었습니다.


-1

CMD 또는 powershell을 사용하여 다양한 .Net 및 CPU 아키텍처 디렉토리로 이동하십시오.

이 명령을 입력하십시오 : aspnet_regiis –r


Windows Server 2008 R2에서 "이 옵션은 Windows Vista에서 지원되지 않습니다."
CSharper

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