webentwicklung-frage-antwort-db.com.de

Einfache ASP.NET-MVC-Anwendung kann nicht mit Visual Studio 2015 von ausgeführt werden IIS (Interner Server 500)

  • Windows 10 Professional
  • IIS 10
  • Visual Studio 2015 (als Administrator ausgeführt)

Ich möchte von IIS anstelle von IIS Express laufen, da ich über eine externe IP-Adresse auf meinen Computer verfüge und Nachrichten von einer externen Quelle erhalten. Letztendlich werde ich WebAPI verwenden, aber zum Testen und Einrichten von IIS verwende ich eine einfache ASP.NET MVC 5-Webanwendung.

Ich habe eine neue ASP.NET MVC 5-Webanwendung erstellt. Dies ist das Skelett der Visual Studio 2015-MVC-Vorlage. Ich habe dann die Anwendung mit IIS Express ausgeführt, keine Probleme:

 enter image description here

Ich ging dann zu IIS 10 und erstellte eine neue Website mit "localhost" als Bindung:

 enter image description here

Der physische Pfad für diese neue Website in IIS lautet C:\inetpub\wwwroot\AspNetMvcTest:

 enter image description here

Ich ging dann zu den Eigenschaften der Webanwendung und wechselte zu IIS. Ich wurde gefragt, ob ich ein neues virtuelles Verzeichnis erstellen möchte:

 enter image description here

Ich klickte auf Ja , wenn Sie auf Nein klicken, wird der Vorgang abgebrochen und Sie haben die Eigenschaften der Webanwendung nicht gespeichert. Sie müssen auf Yes klicken, um zu Local IIS -Eigenschaft in Visual Studio zu wechseln.

Dann wurde mir gesagt, dass IIS "localhost" einem anderen Ordner zugeordnet wurde, und ich möchte gerne neu zuordnen:

 enter image description here

Ich habe auf Ja geklickt. Wenn Sie auf No klicken, werden die Web Application-Eigenschaftsänderungen nicht erneut gespeichert, und Sie werden Local IIS in Visual Studio nicht verwenden. 

Dies ist interessant. Visual Studio versucht, das "virtuelle Verzeichnis" zu ändern, da es tatsächlich den physischen Pfad der IIS-Website ändert und kein virtuelles Verzeichnis hinzufügt. Ein virtuelles Verzeichnis ist ein Ordner irgendwo außerhalb des Physical Path der IIS-Website, die IIS als Teil des Physical Path-Ordners behandelt. Aber ich schweife ab.

Nun wird mir gesagt, dass das "virtuelle Verzeichnis" erfolgreich erstellt wurde:

 enter image description here

Nun können wir uns die Änderungen ansehen, die Visual Studio 2015 an IIS 10 vorgenommen hat:

Wir haben keine virtuellen Verzeichnisse auf der Website, die an localhost gebunden sind:

 enter image description here

Mein physischer Pfad wurde von Visual Studio 2015 geändert und ist meinem Verzeichnis zugeordnet, in dem sich meine einfache ASP.NET MVC 5-Webanwendung befindet:

 enter image description here

Obwohl Visual Studio 2015 beim Ändern der Eigenschaften der ASP.NET MVC 5-Webanwendung das "virtuelle Verzeichnis" verwendet, befasste sich Visual Studio 2015 jedoch nur mit dem physischen Pfad, und dies ist das einzige, was in IIS das kann ich sehen.

jetzt zu den Details des internen Servers Fehler 500

Ich drücke F5 in Visual Studio 2015 und F12 Tools besagt, dass es einen internen Server 500-Fehler gibt:

 enter image description here

Wenn wir die Anfrage und Antwort in Fiddler überprüfen, hat 500 Error eine Content Length = 0

 enter image description here

Um zu versuchen, weitere Details des 500-Fehlers zu erhalten, habe ich Custom Errors in meiner Web.Config deaktiviert und außerdem httpErrors Detailed und PassThrough hinzugefügt:

 enter image description here

Ich habe "catch all" -Ausnahmenbehandlung für Global.asax hinzugefügt, kein Haltepunkt-Treffer  enter image description here :

Hier ist mein Call Stack, der leer ist und keiner der Haltepunkte in Screenshots ist jemals getroffen:

 enter image description here

Ich habe meiner Lösung eine Konsolenanwendung als "Als Startprojekt festlegen" hinzugefügt. Hier ist mein Call Stack, der beweist, dass ein Haltepunkt erreicht werden kann:

 enter image description here

Hier ist ein Screenshot von Ereignisanzeige -> Anwendung. Ich habe das Anwendungsprotokoll gelöscht, in Visual Studio 2015 die Taste F5 gedrückt, das Anwendungsprotokoll aktualisiert und es ist noch leer:

 enter image description here

Ich dachte, das Problem sind Ordnerberechtigungen, nachdem Visual Studio den physischen Pfad geändert hat

Also fügte ich IIS_IUSRS hinzu und erteilte Vollzugriff, obwohl das Konto keine so hohe Berechtigungsebene für das Physical Path-Verzeichnis benötigt:

 enter image description here

Mein ApplicationPoolIndentity ist Framework v4.0 und ApplicationPoolIdentity. Dem ApplicationPoolIdentity wird die Mitgliedschaft in der Gruppe Benutzer sowie in der Gruppe IIS_IUSRS zugewiesen:

 enter image description here

Ich habe versucht, den spezifischen Anwendungspool zu den Sicherheitseigenschaften von ASP.NET MVC-App Physical Directory hinzuzufügen. Daher habe ich zuerst den Prozess gefunden, an den Visual Studio F5 angehängt wurde:

 enter image description here

Ich habe "DefaultAppPool" und meinen IIS Anwendungspool "IIS APPPOOL\AspNetMvcTest" zum physischen Ordner "Sicherheit" hinzugefügt.

Ich habe index.html zum physischen Ordner der Webanwendung hinzugefügt. Das funktioniert nicht:

<html>
<head>
</head>
<body>
<h4 style="color: black">hello world</h4>
</body>
</html>

Ich habe die IIS-Website Physical Path nach inetpub/wwwroot zurück in das Verzeichnis verschoben, das ich erstellt habe, als ich die Website erstellt habe. Ich kann nicht einmal zu einer einfachen HTML-Datei browsen, ich bekomme denselben leeren 500-Fehler

 enter image description here

Also bin ich jetzt festgeklebt und weiß nicht, was ich sonst noch tun soll.

12
Brian Ogden

TL; DR

Bevor Sie den Rest der Antwort lesen, ist Sie müssen wahrscheinlich nur aspnet_regiis ausführen, das Sie von cmd oder über ein cooles Tool im Web Platform Installer ausführen können, wenn Sie "ASP.NET" suchen. Führen Sie ASP.NET IIS Registration Tool "aus, das Sie installieren können. 

Ursprüngliche Antwort:

Vielen Dank für die Hilfe von allen. Zuerst hätte ich einen Schritt zurückgehen und eine Testdatei von index.html "Hello World" von einer IIS - Website mit c:\inetpub\wwwroot als Testdatei getestet Physischer Pfad der IIS-Website.

Wenn Sie IIS zum ersten Mal installieren, haben Sie eine Standardwebsite, navigieren Sie zu dieser Website und stellen Sie sicher, dass dies funktioniert. Ist ein guter Start für einen neuen Computer. Ich habe jedoch gerade gelöscht, dass IIS site nach der Installation von IIS 

Schritte, die ich zur Korrektur genommen habe:

  1. Ich habe IIS über Systemsteuerung -> Programme und Funktionen -> Von Windows-Funktionen deinstalliert. 
  2. Computer neu gestartet
  3. Installierte IIS für Windows 10 im Anschluss an dieses Dokument
  4. IIS getestet, indem eine Website erstellt wurde, der DefaultAppPool verwendet wurde und anschließend localhost durchsucht wurde. Dies funktionierte (wieder, wenn Sie IIS zum ersten Mal installierten, Sie haben diese Website, aber ich habe sie ein paar Tage auf meiner gelöscht vor)
  5. Ich habe festgestellt, dass meine einfache ASP.NET-Website immer noch nicht funktioniert hat, und sie wurde unter c:\inetpub\wwwroot\AspNetMvcTest veröffentlicht. Es handelt sich also nicht um ein potenzielles Ordnerberechtigungsproblem. Anstatt meine ASP.NET-Website IIS zu laden, wurde an das Stammverzeichnis c:\inetpub\wwwroot umgeleitet und die Begrüßungsseite IIS ("iisstart.htm") angezeigt.
  6. Dies bedeutet, dass ich aspnet_regiis über ein cooles Tool im Web Platform Installer ausführen musste. Bei der Suche nach "ASP.NET" gibt es ein praktisches "Ausführen von ASP.NET IIS Registration Tool", das Sie installieren können .
  7. Das war es, ich war fertig, die ASP.NET MVC Website funktionierte sofort nach dem Aktualisieren meines Browsers (localhost in der Adressleiste) mit IIS.

 enter image description here

7
Brian Ogden

Ich denke, das Hauptproblem ist, dass für ASP.NET MVC 5 Web mindestens .NET Framework 4.5 erforderlich ist. Aus den bereitgestellten Informationen wurde der Anwendungspool Ihrer Webanwendung mit .NET 4.0 verwendet. Es sieht so aus, als hätten Sie ASP.NET 4.5 noch nicht mit Ihrem IIS registriert. 

Um ASP.NET 4.5 bei IIS zu registrieren, können Sie die Eingabeaufforderung von Visual Studio (als Administrator) verwenden. Wechseln Sie in das folgende Verzeichnis, und führen Sie den Befehl aspnet_regiis.exe -i aus.

C:\Windows\Microsoft.NET\Framework64\v4.5.<version>

Nachdem Sie ASP.NET 4.5 erfolgreich bei IIS registriert haben, ändern Sie Ihre Webanwendung, um den .NET 4.5-Anwendungspool zu verwenden.

0
Trung Duong