Skript, das vom statischen Dateihandler unter IIS7.5 nicht bereitgestellt wird

130

Ich habe gerade versucht, meine erste Webanwendung auf meinem Windows 7 Home Premium-Notebook für IIS bereitzustellen. Nach dem Erstellen der Anwendung musste ich zum Classic App Pool wechseln und diesen Pool dann für Framework 4.0 festlegen. Jetzt bekomme ich folgenden Fehler:

HTTP-Fehler 404.17 - Nicht gefunden Der angeforderte Inhalt scheint ein Skript zu sein und wird vom statischen Datei-Handler nicht bereitgestellt.

Die angeforderte URL lautet http: // localhost: 80 / pvmms / default.aspx

Ich fürchte, umfangreiches Googeln hat nichts klar oder eindeutig genug ergeben, mit dem ich arbeiten kann, und wie üblich habe ich mich an die Experten gewandt.

EDIT: Ich vermute, das liegt daran, dass es keine Framework 4.0-Handler-Zuordnungen für ASPX-Dateien gibt. Aspnet_regiis gibt meinem Administrator jedoch sogar den Finger und sagt, dass ich Administratorrechte benötige, um es auszuführen.

EDIT # 2: Ich habe alle Frameworks (2 & 4, 32 und 64) registriert und jetzt funktioniert alles. Ich fand dies, indem ich manuell eine .aspxSkriptzuordnung für aspnet_isapi und voila hinzufügte. Ich verstehe nicht, warum die Installation des Frameworks dies nicht tut, es sei denn, mein Speicher versagt mir und ich habe IIS erst nach der Installation von VS aktiviert.

ProfK
quelle
Alternativ können Sie dies auch in web.config tun, wie hier erläutert. Stackoverflow.com/questions/2061678/…
bizl

Antworten:

120

Vielleicht jetzt zu spät, aber meistens musst du rennen

aspnet_regiis.exe -i  

nach der Installation von asp.net. Vielleicht würde ich es jetzt trotzdem tun.

Remy
quelle
17
Es gibt zwei IIS-Registrierungstools, die im Lieferumfang von .NET Framework enthalten sind. eine für Standardsysteme und eine für 64-Bit-Systeme. Das Tool für 64-Bit-Systeme befindet sich im Framework64-Verzeichnis des Microsoft.NET-Verzeichnisses im Windows-Ordner. Beispiel: C: \ WINDOWS \ Microsoft.NET \ Framework64 \ v2.0.50727 enthält das IIS-Registrierungstool.
Matthew Lock
3
Wenn Sie den Fehler erhalten the command is not recognized as an internal or external command. Führen Sie es in der Developer-Eingabeaufforderung aus.
RockXrock
1
Ich musste dies für das 2.0-Framework im Framework64-Ordner tun. wie das, was @matthew Lock gesagt hat
codingNightmares
Beachten Sie auch, dass Sie zuerst 2.0 ausführen müssen, wenn Sie 2.0 und 4.0 ausführen müssen.
SouthShoreAK
C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 (für v2.0 unter x64) - Ändern Sie Framework64 in Framework für x86, ändern Sie v2. * In v4. * Für v4 (suchen Sie im übergeordneten Ordner nach dem genauen Namen)
JohnLBevan
63

Wenn Sie WCF-Unterstützung benötigen, müssen Sie möglicherweise Folgendes ausführen:

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

Ersetzen Sie v3.0 durch Ihre aktuelle Framework-Version.

Adi
quelle
1
Hinweis für andere, ich denke, auf Webapps, die 4.0 App Pool verwenden, müssen Sie aspnet_regiis erneut ausführen
Tim Gabrhel
1
Für .Net 4 befindet es sich im übergeordneten Verzeichnis. Beispiel: C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ ServiceModelReg.exe -i
bytedev
57

Ich habe diesen Fehler in IIS 8.5 festgestellt, als ich versucht habe, auf einen von mir geschriebenen WCF-Dienst zuzugreifen. Es stellte sich heraus, dass auf dem Server die WCF-HTTP-Aktivierungsfunktionen nicht aktiviert waren. Aktivierte die Kontrollkästchen und klickte durch den Assistenten, iisreset, begann zu arbeiten.

Windows-Funktionsbereich

JTR
quelle
1
Dies funktionierte bei mir mit IIS 8.5 und Windows 8.1. Ich musste ein ASHX aktivieren, um den in der Frage (HTTP 404.17) beschriebenen Fehler zu erhalten
Sergio A.
DANKE! Das hat bei mir funktioniert. In meinem Fall musste ich es jedoch für .NET 2.0 aktivieren, da ich den alten Webdienst verwende
Stefan Vasiljevic
Dies ist ein alter Beitrag, aber Ihre Lösung hat meinen Speck gerettet. Ich hätte das in einer Million Jahren nicht gefunden ... irgendwo anders. Danke dir.
Joe Schmucker
48

Wenn Sie iis 7.5 verwenden.

Gehen Sie einfach zum IIS-Manager und öffnen Sie die Eigenschaften Ihrer Website.

Dort wird der Abschnitt "Handler-Zuordnungen" angezeigt. Gehen Sie einfach zu diesem Abschnitt und suchen Sie nach "staticFile".

Höchstwahrscheinlich ist es eine letzte Datei in der Liste.

Klicken Sie dann mit der rechten Maustaste darauf und wählen Sie "Auf Eltern zurücksetzen".

Ich habe so viele Stunden verschwendet, während ich mich dem ersten Mal gestellt habe. Auf jeden Fall wird dies Ihr Problem lösen.

Kumar
quelle
2
Wie von Adi beantwortet: Dieses Kommando erledigt genau das: c: \ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation \ ServiceModelReg.exe -i
JDC
Danke @Kumar für den Tipp! IIS> Sites> acme.com> Handlerzuordnungen> Auf übergeordnetes Element zurücksetzen. In meinem Fall habe ich es für die gesamte Domain gemacht und nicht nur für "staticFile". Dies funktionierte für mich und war einfacher / vorzuziehen als das Ausführen einer ausführbaren Datei (aspnet_regiis.exe). Warum sprudelt dieser Vorschlag nicht weiter nach oben? =)
jiminy
Genialer Tipp ... aber woher zum Teufel kam dieser Showstopper? Ich kann mich nicht erinnern, jemals in früheren Versionen von IIS darauf gestoßen zu sein ...!
Mike Gledhill
25

Ich hatte dieses Problem mit Windows Server 2012 mit ASP .NET 4.5. Sie können aspnet_regiis.exe nicht verwenden und müssen ASP .NET 4.5 nur über den Assistenten zum Hinzufügen von Rollen und Funktionen installieren:

Geben Sie hier die Bildbeschreibung ein

Den Menüpunkt "Rollen und Funktionen hinzufügen" finden Sie im Menü "Verwalten" in der rechten Ecke des Server-Managers

C. Augusto Proiete
quelle
1
Der Menüpunkt "Rollen und Funktionen hinzufügen" finden Sie im Menü "Verwalten" in der rechten Ecke des Server-Managers
Alexander Trofimov
16

Alt-Text

sollte diese Option überprüfen, nehme ich an

Jsinh
quelle
1
Hiermit wird lediglich festgelegt, ob statische Inhalte bereitgestellt werden können oder nicht. Mein Problem ist, dass Skriptanforderungen statischen Inhalten zugeordnet werden. Wenn ich es ausschalte, versucht IIS nicht einmal, die Seite zu bedienen, sondern gibt mir nur ein Leerzeichen.
ProfK
16

Ich habe dieses Problem durch Aktivieren gelöst WCF Services

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

Aber Sie müssen zugeben, Jungs, dieses GESAMTE IIS-Setup konfiguriert / erraten / testen und sieht / versucht dies / versucht, das 4 oder 5 unserer Tage damit verbringt, eine Lösung für den Ansatz zu finden. IST EIN KOMPLETTER UND UTTER-WITZ.

Sicherlich ist 'IIS' der größte Vertrauens-Trick, der jemals auf die Menschheit zum Datum gespielt wurde

Richard
quelle
1
Sie müssen lediglich die Funktion für statische Inhalte für IIS aktivieren. Dies hat nichts mit WCF zu tun.
ProfK
1
@ProfK hängt davon ab, warum Sie diesen Fehler erhalten. Unterschiedliche Ursachen führen zu demselben Fehler. Wenn Sie den Fehler mit einer SVC-Datei erhalten, die für die Verwendung von WCF konfiguriert ist, wird er durch die oben genannten Fehler behoben.
JohnLBevan
LOL stimmt voll und ganz zu, portiert mehrere Sites und hat gerade 5 verschiedene Arten von Fehlern gesehen, alle ohne tatsächliche oder sehr kryptische Fehlermeldung. Beispiel "Die Seite kann nicht angezeigt werden, weil ein interner Serverfehler aufgetreten ist" bedeutet, dass Sie einen statischen Inhaltsmimetyp hinzugefügt haben, der bereits vorhanden ist.
Mike Nelson
15

Ich weiß, dass dies eine alte Frage ist, aber ich hatte sie gerade mit einer 3.5-Anwendung auf meinem neu erstellten Windows 8-Computer und ich bekam sie immer noch danach aspnet_regiis -iruund es stellte sich heraus, dass ASP.NET 3.5 in den Anwendungsentwicklungsfunktionen nicht angekreuzt war (nicht genug Ruf, um ein Bild zu posten).

bicbmx
quelle
2
@bicbmx für das Bild, könnten Sie einen Link teilen, nachdem Sie diesen irgendwo hochgeladen haben, z. B. auf imgur.com
superjos
12

Es besteht die Möglichkeit, dass der für Ihre Anwendung standardmäßig erstellte Anwendungspool Version 2 ist. Obwohl in der Liste ein Handler für die Erweiterung .svc angezeigt wird, funktioniert dieser nicht und behandelt ihn als statische Datei. Sie müssen lediglich die Eigenschaften des Anwendungspools öffnen und auf Version 4 wechseln.

Konstantin Salavatov
quelle
8

Registrieren Sie asp.net erneut .... wird das Problem lösen.
Geben Sie hier die Bildbeschreibung ein

Gehen Sie zur Eingabeaufforderung von Visual Studio
und registrieren Sie asp.net als windows \ microsoft.net \ Framework [.Net version num] \ aspnet_regiis.exe -i

Sunil
quelle
2
aspnet_regiis.exe -i antwortet mit "Diese Option wird von dieser Version des Betriebssystems nicht unterstützt." Warum ist IIS so ein Schmerz im Arsch?
Paul McCarthy
5

Ich hatte das gleiche Problem auf einem Windows 8-Computer, den ich einrichte. Ich hatte vs2012 vor vs2010 installiert, das .NET Framework 4.5 installiert. Ich habe meine App-Pools in 4.0 ausgeführt. Ich habe mit aspnet_regiis -i sichergestellt, dass ich aspnet für 4.0 registriert habe. Das hat immer noch nicht geklappt. Dann öffnete ich die Windows-Funktionen und stellte fest, dass 4.5 einen Satz namens ".NET Framework 4.5 Advanced Services" hinzufügte. Ich habe den WCF-Dienstknoten und seine untergeordneten Knoten aktiviert und dann hat mein SVC-Endpunkt ordnungsgemäß funktioniert. Ich hoffe, dies hilft Leuten, die auf Windows 8 umsteigen.

IceNine
quelle
Server 2012, IIS8 auch hier, danke für den Zeiger, mit dem Sie mich in die richtige Richtung gebracht haben. Für Interessenten musste ich sowohl die Anwendungsserverrolle als auch die Webserverrolle aktivieren. Ich fand die Informationen, die ich brauchte, hier: msdn.microsoft.com/en-us/library/hh167503(v=nav.70).aspx
John
3

Ich bin auf diese Frage gestoßen, als ich auf dasselbe Problem stieß. Die Hauptursache für mein Problem war ein falsch konfigurierter App-Pool. Es wurde versehentlich auf 2.0 eingestellt, wenn es auf 4.0 eingestellt werden musste. Die Antwort unter dem folgenden Link hat mir geholfen, dieses Problem aufzudecken: http://forums.iis.net/t/1160143.aspx

Garrison Neely
quelle
2

Ich hatte das gleiche Problem. Wenn ich Static Content Feaute für IIS hinzugefügt habe, funktioniert es einwandfrei.

jasharbn
quelle
2

Nur eine weitere mögliche Lösung, bei der ich die gleiche Fehlermeldung gefunden habe.

Beim Versuch, eine .NET 4.0-Webanwendung für einen neuen Anwendungspool einzurichten, wurde der seltsame Fehler angezeigt, dass versucht wurde, meine Aspx-Datei mit dem statischen Datei-Handler zu verarbeiten, was keinen Sinn ergab.

Aus irgendeinem Grund wurde ISAPI für .NET 4.0 im Bereich ISAPI- und CGI-Einschränkungen der Serverebene im IIS-Manager deaktiviert . Das Aktivieren war alles, was erforderlich war. Der IIS 7.5-Manager ist jedoch so kompliziert und schwer zu befolgen, dass ich lange gebraucht habe , um dies herauszufinden.

Ich vermute, da es sich um eine 4.0-Anwendung handelte, die von der 4.0-Engine nicht verarbeitet werden konnte, wurde standardmäßig der statische Datei-Handler verwendet.

DarrenMB
quelle
2

Für andere Leute, die dies lesen:

Dies kann passieren, wenn die von Ihnen registrierte .NET-Version nicht diejenige ist, die unter den "Grundeinstellungen" des an Ihre Website angehängten Anwendungspools ausgewählt wurde. In Ihrem Site-Anwendungspool ist beispielsweise .Net v2.0 ausgewählt, Sie haben jedoch v4.0 registriert

b15
quelle
2

Für Windows 10 / Framework 4.7 musste ich die HTTP-Aktivierung mithilfe der folgenden Methode aktivieren:

  1. Systemsteuerung> Programme und Funktionen> Windows-Funktionen ein- oder ausschalten
  2. Erweitern Sie unter .NET Framework 4.7 Advanced Services die Option WCF-Dienste, aktivieren Sie die Option, um die HTTP-Aktivierung und alle anderen Informationen zu überprüfen, die Sie für die Arbeit mit WCF benötigen
  3. Klicken Sie auf OK und lassen Sie die Installation ihre Aufgabe ausführen. Öffnen Sie dann eine administrative Eingabeaufforderung und geben Sie den Befehl IISRESET aus
Will Buffington
quelle
1

cmd -> Rechtsklick -> Als Administrator ausführen

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

Safaa Elgendi
quelle
0

Unter Verwendung des IIS-Managers stellte ich fest, dass ASPX-Dateien (unter "Handler-Zuordnungen") ISAPI 2.0 zugeordnet wurden - obwohl ASP.NET 4.5 zuvor installiert worden war. Das Problem wurde behoben, indem sie so bearbeitet wurden, dass sie (auch) auf eine ausführbare Datei für ISAPI 4.0 64bit verweisen.

Die ausführbare Datei wurde in% windir% \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_isapi.dll gefunden

Matthew Diggins
quelle
0

Ich habe diese Nachricht für eine Anwendung auf iis 7.5 mit einem klassischen App-Pool erhalten, der .net 2.0 zugewiesen ist. Ich musste zu Handler Mappings gehen und zwei Script Maps hinzufügen, beide waren bis auf den Namen gleich. Ein Name war SVC-ISAPI-2.0-64, der andere war SVC-ISAPI-2.0. Der Anforderungspfad war .svc. Die ausführbare Datei war% SystemRoot% \ Microsoft.NET \ Framework64 \ v2.0.50727 \ aspnet_isapi.dll. Ich habe iis neu gestartet und alles war glücklich

Robert
quelle
0

Eines der schlimmsten Szenarien, die ich gerade gelöst habe, ist ein widersprüchlicher Eintrag in Web.config.

Auf meinem lokalen Computer war die Erweiterung .woff nicht in IIS registriert, daher habe ich sie mit Web.config hinzugefügt. Aber auf dem Produktionsserver hatte .woff den MIME-Typ registriert. Dies führte zu Konflikten auf Anwendungsebene.

Lustiger Teil ist, dass dafür kein Fehler protokolliert wird. Nur eine Vermutung (natürlich zum ersten Mal).

Für mich bestand die Lösung darin, Elemente aus web.config zu entfernen und / oder zu entfernen.

Ashish
quelle
0

Ich hatte das gleiche Problem. Ich habe gerade die Ziel-Framework-Version auf der Website in die Version geändert, in der sie entwickelt wurde. Gleich in IIS. Dies löste mein Problem. Hoffe das hilft...

Danke

Arjun
quelle
0

Dies kann mehrere Gründe haben, in meinem Fall unter Anwendungspool-> Voreinstellung-> 32-Bit-Anwendung aktivieren (sollte wahr sein). Es wurde zuvor auf false gesetzt.

Madhur
quelle
-1

Navigieren Sie mit CMD oder Powershell zu Ihrem .NET- und CPU-Architekturverzeichnis

Geben Sie diesen Befehl ein: aspnet_regiis –r

Jose Vega
quelle
In Windows Server 2008 R2 heißt es: "Diese Option wird unter Windows Vista nicht unterstützt."
CSharper
Es gibt keine Option namens -r
NishantMittal