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:
Ich ging dann zu IIS 10 und erstellte eine neue Website mit "localhost" als Bindung:
Der physische Pfad für diese neue Website in IIS lautet C:\inetpub\wwwroot\AspNetMvcTest
:
Ich ging dann zu den Eigenschaften der Webanwendung und wechselte zu IIS. Ich wurde gefragt, ob ich ein neues virtuelles Verzeichnis erstellen möchte:
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:
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:
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:
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:
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:
Wenn wir die Anfrage und Antwort in Fiddler überprüfen, hat 500 Error eine Content Length = 0
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:
Ich habe "catch all" -Ausnahmenbehandlung für Global.asax hinzugefügt, kein Haltepunkt-Treffer :
Hier ist mein Call Stack, der leer ist und keiner der Haltepunkte in Screenshots ist jemals getroffen:
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:
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:
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:
Mein ApplicationPoolIndentity ist Framework v4.0 und ApplicationPoolIdentity. Dem ApplicationPoolIdentity wird die Mitgliedschaft in der Gruppe Benutzer sowie in der Gruppe IIS_IUSRS zugewiesen:
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:
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
Also bin ich jetzt festgeklebt und weiß nicht, was ich sonst noch tun soll.
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:
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.