Skrypt nie jest obsługiwany przez statyczną procedurę obsługi plików w usługach IIS 7.5

130

Właśnie próbowałem wdrożyć moją pierwszą aplikację internetową w usługach IIS na moim notebooku z systemem Windows 7 Home Premium. Po utworzeniu aplikacji musiałem przejść na klasyczną pulę aplikacji, a następnie ustawić tę pulę na framework 4.0. Teraz pojawia się następujący błąd:

Błąd HTTP 404,17 - nie znaleziono Żądana zawartość wygląda na skrypt i nie będzie obsługiwana przez statyczną procedurę obsługi plików.

Żądany adres URL to http: // localhost: 80 / pvmms / default.aspx

Obawiam się, że obszerne wyszukiwanie w Google nie przyniosło nic wystarczająco jasnego ani konkretnego, z którym mógłbym pracować i jak zwykle zwróciłem się do ekspertów.

EDYCJA: Podejrzewam, że dzieje się tak dlatego, że nie ma mapowań obsługi Framework 4.0 dla plików .aspx. Jednak aspnet_regiis daje nawet mojemu administratorowi palec i mówi, że potrzebuję uprawnień administratora, aby go uruchomić.

EDYCJA # 2: Zarejestrowałem wszystkie frameworki (2 i 4, 32 i 64) i wszystkie teraz działają. Znalazłem to, ręcznie dodając mapę skryptu .aspxdo aspnet_isapi i voila. Nie rozumiem, dlaczego instalacja frameworka tego nie robi, chyba że moja pamięć zawiedzie mnie i włączyłem IIS dopiero po zainstalowaniu VS.

ProfK
źródło
Alternatywnie zrób to w web.config, jak wyjaśniono tutaj stackoverflow.com/questions/2061678/…
bizl

Odpowiedzi:

120

Może teraz jest już za późno, ale częściej niż nie musisz biec

aspnet_regiis.exe -i  

po zainstalowaniu asp.net. Może i tak bym to teraz zrobił.

Remy
źródło
17
Istnieją dwa narzędzia rejestracji usług IIS dostarczane z programem .NET Framework; jeden dla systemów standardowych i jeden dla systemu 64-bitowego. Narzędzie dla systemów 64-bitowych znajduje się w katalogu Framework64 katalogu Microsoft.NET wewnątrz folderu Windows; na przykład C: \ WINDOWS \ Microsoft.NET \ Framework64 \ v2.0.50727 zawierałoby narzędzie rejestracji usług IIS.
Matthew Lock
3
Jeśli pojawi się błąd the command is not recognized as an internal or external command. Uruchom go w wierszu polecenia dewelopera.
rockXrock,
1
Musiałem to zrobić dla frameworka 2.0 w folderze Framework64. jak to, co powiedział @matthew Lock
kodowanie Nightmares
Warto również zauważyć, że jeśli musisz uruchomić 2.0 i 4.0, najpierw uruchom 2.0.
SouthShoreAK
C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 (dla v2.0 na x64) - zmień Framework64 na Framework dla x86, zmień v2. * Na v4. * Dla v4 (przejdź do folderu nadrzędnego, aby uzyskać dokładną nazwę)
JohnLBevan
63

Oprócz powyższego, jeśli potrzebujesz obsługi WCF, może być konieczne uruchomienie tego:

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

Zastąp wersję 3.0 na inną, którą masz obecnie.

Adi
źródło
1
Uwaga dla innych, myślę, że w przypadku aplikacji internetowych, które używają puli aplikacji 4.0, będziesz musiał ponownie uruchomić
aspnet_regiis
1
W przypadku .Net 4 znajduje się w katalogu nadrzędnym. Np .: C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ ServiceModelReg.exe -i
bytedev
58

Napotkałem ten błąd z IIS 8.5 podczas próby uzyskania dostępu do usługi WCF, którą napisałem. Okazuje się, że serwer nie miał włączonych funkcji aktywacji HTTP WCF. Zaznaczono pola i kliknąłem kreatora iisreset, rozpocząłem pracę.

Panel funkcji systemu Windows

JTR
źródło
1
To zadziałało dla mnie z IIS 8.5 i Windows 8.1. Musiałem włączyć ASHX, otrzymując błąd opisany w pytaniu (HTTP 404.17)
Sergio A.
DZIĘKUJĘ CI! To zadziałało dla mnie. Jednak w moim przypadku musiałem go włączyć dla .NET 2.0, ponieważ używam starego serwisu internetowego
Stefan Vasiljevic
To jest stary post, ale Twoje rozwiązanie uratowało mój boczek. Nie znalazłbym tego za milion lat ... nigdzie indziej. Dziękuję Ci.
Joe Schmucker
48

Jeśli używasz iis 7.5.

Po prostu przejdź do Menedżera usług IIS, otwórz właściwości witryny.

Zobaczysz tam sekcję „Handler Mappings”, po prostu przejdź do tej sekcji i wyszukaj „staticFile”.

Najprawdopodobniej jest to ostatni plik na liście.

Następnie kliknij prawym przyciskiem myszy i wybierz „Przywróć rodzica”.

Zmarnowałem tyle godzin, kiedy stanąłem twarzą w twarz z tym pierwszym razem, tak czy inaczej to rozwiąże twój problem.

Kumar
źródło
2
Jak odpowiedział Adi: ten komandos robi to wszystko: c: \ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation \ ServiceModelReg.exe -i
JDC
Dziękuję @Kumar za wskazówkę! IIS> Witryny> acme.com> Mapowania obsługi> Przywróć do nadrzędnego. W moim przypadku zrobiłem to dla całej domeny, a nie tylko „staticFile”. To zadziałało dla mnie i było prostsze / lepsze niż uruchamianie pliku wykonywalnego (aspnet_regiis.exe). Dlaczego ta sugestia nie rośnie dalej? =)
jiminy
Genialna wskazówka ... ale skąd się wziął ten showstopper? Nie pamiętam, bym kiedykolwiek spotkał to w poprzednich wersjach IIS ...!
Mike Gledhill
25

Miałem ten problem z systemem Windows Server 2012 z ASP .NET 4.5, nie można użyć aspnet_regiis.exe i wystarczy zainstalować ASP .NET 4.5 za pomocą Kreatora dodawania ról i funkcji:

wprowadź opis obrazu tutaj

Element menu „Dodaj role i funkcje” można znaleźć w menu „Zarządzaj” w prawym rogu Menedżera serwera

C. Augusto Proiete
źródło
1
Punkt menu „Dodaj role i funkcje” można znaleźć w menu „Zarządzaj” w prawym rogu Menedżera serwera
Alexander Trofimov
16

tekst alternatywny

powinienem sprawdzić tę opcję

Jsinh
źródło
1
To tylko określa, czy treść statyczna może być wyświetlana, czy nie. Mój problem polega na tym, że żądania skryptów są mapowane na zawartość statyczną. Jeśli to wyłączę, usługi IIS nawet nie będą próbować serwerować strony, po prostu dając mi puste miejsce.
ProfK,
16

Rozwiązałem ten problem, włączając WCF Services

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

Ale musisz przyznać, że ta CAŁA konfiguracja IIS skonfiguruj / zgadnij / próbuj i zobacz / wypróbuj to / spróbuj, która spędza 4 lub 5 naszych dni, próbując znaleźć rozwiązanie dotyczące podejścia, JEST CAŁKOWITY I NIEPRAWIDŁOWY ŻART.

PEWNIE, `` IIS '' TO NAJWIĘKSZA SZTUCZKA PEWNOŚCI, W KTÓREJ ZOSTAŁO WYKORZYSTANA LUDZKOŚĆ

Richard
źródło
1
Wszystko, co musisz zrobić, to włączyć funkcję zawartości statycznej dla usług IIS. To nie ma nic wspólnego z WCF.
ProfK
1
@ProfK zależy od tego, dlaczego otrzymujesz ten błąd, różne przyczyny powodują ten sam błąd - jeśli otrzymujesz błąd z plikiem SVC skonfigurowanym do korzystania z WCF, powyższe rozwiązuje problem.
JohnLBevan
LOL całkowicie się zgadza, przenosząc kilka witryn i właśnie zobaczyłem 5 różnych rodzajów błędów, wszystkie bez rzeczywistego komunikatu o błędzie lub bardzo tajemniczy. Przykład „Nie można wyświetlić strony, ponieważ wystąpił wewnętrzny błąd serwera” oznacza, że ​​dodano statyczny typ MIME treści, który już istnieje.
mike nelson,
15

Wiem, że to stare pytanie, ale właśnie miałem to z aplikacją 3.5 na moim odbudowanym komputerze z systemem Windows 8 i nadal to rozumiałem aspnet_regiis -irui okazało się, że ASP.NET 3.5 nie został zaznaczony w funkcjach tworzenia aplikacji (za mało reputacji, aby opublikować zdjęcie).

bicbmx
źródło
2
@bicbmx dla obrazu, możesz udostępnić link po przesłaniu go gdzieś, np. na imgur.com
superjos
12

Istnieje prawdopodobieństwo, że domyślnie utworzona pula aplikacji dla Twojej aplikacji to wersja 2. Więc chociaż widzisz na liście program obsługi dla rozszerzenia .svc, nie działa i traktuje go jako plik statyczny. Wystarczy otworzyć właściwości puli aplikacji i przełączyć ją na wersję 4.

Konstantin Salavatov
źródło
8

Zarejestruj ponownie asp.net .... rozwiąże problem.
wprowadź opis obrazu tutaj

Przejdź do wiersza polecenia programu Visual Studio
i zarejestruj asp.net jako windows \ microsoft.net \ Framework [numer wersji .Net] \ aspnet_regiis.exe -i

Sunil
źródło
2
aspnet_regiis.exe -i odpowiada komunikatem „Ta opcja nie jest obsługiwana w tej wersji systemu operacyjnego”. Dlaczego IIS jest taki upierdliwy?
Paul McCarthy,
5

Miałem ten sam problem na konfigurowanym komputerze z systemem Windows 8. Zainstalowałem vs2012 przed vs2010, który instaluje .NET framework 4.5. Moje pule aplikacji działają w wersji 4.0. Upewniłem się, że mam aspnet zarejestrowany w wersji 4.0 przy użyciu aspnet_regiis -i. To wciąż nie działało. Następnie otworzyłem funkcje systemu Windows i zauważyłem, że 4.5 dodał zestaw o nazwie „.NET Framework 4.5 Advanced Services”. Włączyłem węzeł usługi WCF i jego elementy podrzędne, a następnie mój punkt końcowy svc działał poprawnie. Mam nadzieję, że pomoże to osobom, które przechodzą na system Windows 8.

IceNine
źródło
Server 2012, IIS8 również tutaj, dzięki za wskazówkę, dzięki której poszedłem we właściwym kierunku. Dla zainteresowanych wymagałem włączenia roli serwera aplikacji oraz roli serwera WWW. Znalazłem potrzebne informacje tutaj: msdn.microsoft.com/en-us/library/hh167503(v=nav.70).aspx
John
3

Natknąłem się na to pytanie, kiedy napotkałem ten sam problem. Główną przyczyną mojego problemu była nieprawidłowo skonfigurowana pula aplikacji. Nieumyślnie został ustawiony na 2.0, kiedy trzeba go było ustawić na 4.0. Odpowiedź pod poniższym linkiem pomogła mi odkryć ten problem: http://forums.iis.net/t/1160143.aspx

Garrison Neely
źródło
3

Dla innych osób czytających to:

Może się tak zdarzyć, jeśli wersja .Net, którą zarejestrowałeś, nie jest wersją wybraną w „Ustawieniach podstawowych” puli aplikacji dołączonej do Twojej witryny. Na przykład pula aplikacji witryn ma wybraną wersję .Net v2.0, ale zarejestrowano wersję 4.0

b15
źródło
2

Miałem ten sam problem. Po dodaniu zawartości statycznej dla usług IIS działa dobrze.

jasharbn
źródło
2

To tylko kolejne możliwe rozwiązanie, które znalazłem z tym samym komunikatem o błędzie.

Podczas próby skonfigurowania aplikacji internetowej .NET 4.0 do nowej puli aplikacji otrzymałem ten dziwny błąd informujący mnie, że próbowałem przetworzyć mój plik aspx za pomocą statycznej procedury obsługi plików, co nie miało sensu.

Z jakiegoś powodu ISAPI dla .NET 4.0 został wyłączony w obszarze Ograniczenia ISAPI i CGI na poziomie serwera w menedżerze IIS. Wystarczyło ustawić tę opcję na włączone , jednak menedżer IIS 7.5 jest tak zawiły i trudny do wykonania, że ​​zajęło mi dużo czasu, aby to rozgryźć.

Zgaduję, że ponieważ była to aplikacja 4.0, której nie można było przetworzyć przez silnik 4.0, domyślnie używana była statyczna obsługa plików.

DarrenMB
źródło
2

W przypadku systemu Windows 10 / Framework 4.7 musiałem włączyć aktywację HTTP w następujący sposób:

  1. Panel sterowania> Programy i funkcje> Włącz lub wyłącz funkcje systemu Windows
  2. W obszarze .NET Framework 4.7 Advanced Services rozwiń WCF Services, zaznacz, aby sprawdzić aktywację HTTP i wszystko, czego potrzebujesz podczas pracy z WCF
  3. Kliknij OK i pozwól instalacji wykonać swoje zadanie, a następnie otwórz administracyjny wiersz poleceń i wydaj polecenie IISRESET
Will Buffington
źródło
1

cmd -> prawy przycisk myszy -> Uruchom jako administrator

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

Safaa Elgendi
źródło
0

Korzystając z menedżera IIS, odkryłem, że pliki .aspx zostały zmapowane (w sekcji „Mapowania obsługi”) do ISAPI 2.0 - mimo że ASP.NET 4.5 był wcześniej zainstalowany. Edytowanie ich tak, aby wskazywały (również) na plik wykonywalny dla 64-bitowego ISAPI 4.0, rozwiązało problem.

Plik wykonywalny znaleziono w% windir% \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_isapi.dll

Matthew Diggins
źródło
0

Otrzymałem tę wiadomość dla aplikacji w systemie iis 7.5 z klasyczną pulą aplikacji przypisaną do .net 2.0. Musiałem przejść do Handler Mappings i dodać dwie mapy skryptów, obie były takie same, z wyjątkiem nazwy. jedna nazwa to svc-ISAPI-2.0-64, a druga to svc-ISAPI-2.0. Ścieżka żądania to .svc. Plik wykonywalny to% SystemRoot% \ Microsoft.NET \ Framework64 \ v2.0.50727 \ aspnet_isapi.dll. zrestartowałem iis i wszystko było szczęśliwe

Robert
źródło
0

Jednym z najgorszych scenariuszy, które właśnie rozwiązałem, jest konflikt wpisu w pliku Web.config.

Na moim komputerze lokalnym nie miałem zarejestrowanego rozszerzenia .woff w IIS, więc dodałem je za pomocą Web.config. Ale na serwerze produkcyjnym .woff miał zarejestrowany typ MIME. Spowodowało to konflikt na poziomie aplikacji.

Zabawne jest to, że nie ma w tym przypadku zarejestrowanych błędów. Tylko zgadywanie (oczywiście za pierwszym razem).

Więc dla mnie rozwiązaniem było po prostu usunięcie i / lub elementów z web.config.

Ashish
źródło
0

Miałem ten sam problem, właśnie zmieniłem docelową wersję frameworka na stronie na wersję, w której jest rozwijana, Same w IIS. To rozwiązało mój problem. Mam nadzieję że to pomoże...

Dziękuję Ci

Arjun
źródło
0

może być wiele przyczyn, w moim przypadku w sekcji Pula aplikacji-> ustawienia zaawansowane-> Włącz aplikację 32-bitową (powinno być prawdą).

madhur
źródło
-1

Przejdź do katalogu architektury .Net i procesora za pomocą CMD lub PowerShell

Wpisz to polecenie: aspnet_regiis –r

jose vega
źródło
W systemie Windows Server 2008 R2 mówi: „Ta opcja nie jest obsługiwana w systemie Windows Vista”.
CSharper
Nie ma opcji o nazwie -r
NishantMittal