webentwicklung-frage-antwort-db.com.de

Debuggen von ASP.NET Core-Anwendungen, die in ausgeführt werden IIS

Gibt es eine Möglichkeit, eine ASP.NET Core-Webanwendung zu debuggen, während IIS ausgeführt wird? 

Ich arbeite unter IIS, da ich es auf Port 443 über SSL verfügbar machen muss. 

26
Brandon F
  1. Veröffentlichen Sie die Webanwendung mit der Debug-Konfiguration
  2. Richten Sie eine Website auf IIS ein, wie beschrieben hier
  3. Öffnen Sie die Website im Browser, um den dotnet-Prozess zu starten
  4. Öffnen Sie in Visual Studio Debug -> Attach to Process oder drücken Sie Strg + Alt + P
  5. Stellen Sie sicher, dass in der Zeile "Anhängen an" "Automatisch" oder "Verwaltet (v4.6, v4.5, v4.0)" eingestellt ist. Wenn nicht, drücken Sie Auswahl und wählen "Codetyp zum Debuggen automatisch ermitteln".
  6. Aktivieren Sie "Prozesse von allen Benutzern anzeigen".
  7. Wählen Sie dotnet.exe und drücken Sie Anhängen.

Hinweis: Wenn Sie mehrere dnx.exe-Prozesse sehen, wählen Sie denjenigen mit IIS Benutzer in der Spalte Benutzername. Standardmäßig ist dies "IIS APPPOOL {Name Ihres App-Pools}".

P.S. Wenn der dotnet-Prozess mit leerem Benutzernamen angezeigt wird, führen Sie Visual Studio als Administrator aus

AKTUALISIEREN

Bei ASP.Net Core 1.0.0 müssen Sie eine Verbindung zu "{youprojectnamet.exe}" herstellen. Z.B. Wenn Ihr Projekt den Namen "Web" hat, müssen Sie an "Web.exe" .__ anhängen. Den Namen der Führungskraft finden Sie auch im folgenden Abschnitt von web.config

<system.webServer>
   <aspNetCore processPath=".\Web.exe" />
</system.webServer>
50
Vitaly

Der Vorteil ist, dass Sie die Website auch außerhalb eines tatsächlichen Hostnamens verwenden können. Stellen Sie sich vor, Sie hätten eine Android-App, die versucht, sich mit localhost zu verbinden, um einen asp.net-Kern-Web-API-Service zu debuggen. Ein Setup-Problem, es sei denn, Sie können tatsächlich eine physische IP-Adresse verwenden und eine Verbindung zu etwas herstellen, das auf iis läuft. Genau wie vorher. Alles ist machbar, bedeutet aber nicht, dass es bei neuen Einstellungen automatisch praktischer ist. Und wenn Sie nicht die alte Debug-Option haben, ist dies ein Rückschritt in Bezug auf die Produktivität.

5
Looooooka

Ist das wirklich nötig? ASP.NET-Kernanwendungen werden als externer Prozess für IIS (mit dotnet.exe) ausgeführt. Durch das Debuggen über IIS wird also nichts gewonnen. Die Backend-Anwendung erhält Anforderungen über einfaches HTTP.

Für weitere Informationen darüber, wie das eigentliche IIS - Hosting mit ASP.NET Core funktioniert, können Sie diesen Blogbeitrag lesen: http://weblog.west-wind.com/posts/2016/Jun/06/Publishing-and-Running-ASPNET-Core-Anwendungen-mit-IIS

Momentan unterstützt Visual Studio nicht das Debuggen unter vollem IIS. Soweit ich gehört habe, ist dies auch nicht geplant. Microsoft unterstützt die Ausführung mit IIS Express und Sie können ein Zertifikat für IIS Express einrichten. 

Im ASP.NET Core-Projekt gibt es in den Debug-Projektoptionen die Option Enable SSL, die Sie aktivieren können. IIS Express erstellt ein lokales Zertifikat und lässt Sie Ihre Anwendung mithilfe von SSL debuggen.

Der Vorteil dieses Ansatzes ist, dass er nur durch Drücken von F5 funktioniert - kein manuelles Anbringen erforderlich.

 enter image description here

5
Rick Strahl

Szenario: Debuggen der ASP.NET Core-Webanwendung, die auf IIS Local ausgeführt wird.

Voraussetzung: Fügen Sie Ihrer vorhandenen Visual Studio-Installation "Entwicklungszeit IIS Support" hinzu. Folgen Sie dem nächsten Link: https://blogs.msdn.Microsoft.com/webdev/2017/07/13/development-time-iis-support-for-asp-net-core-applications/


1. Erstellen Sie in Visual Studio 2017 "ASP.NET Core-Webanwendung" mit dem Namen "MvcMovie".

1.1. Öffnen Sie das "MvcMovie" -Projekt Properties.

1.1.2. Gehen Sie zur Registerkarte "Debug" und legen Sie (falls nicht) fest:

1.1.2.1. "Profil:" "MvcMovie".

1.1.2.2. "Starten:" "IIS"

1.1.2.3. (angehakt) "Browser starten:" " https: // localhost "

1.1.2.4. "Umgebungsvariablen:" | Name: "ASPNETCORE_ENVIRONMENT" | Wert: "Entwicklung" |

1.1.2.5. "Webserver-Einstellungen"

1.1.2.5.1. "App-URL:" " https: // localhost "

1.1.2.5.2. (angekreuzt) "Anonyme Authentifizierung aktivieren"

 enter image description here


2. Im "IIS Local" Manager "Website hinzufügen" mit dem Namen "AspNetCoreMvcMovie".

2.1. Legen Sie im Ordner "Projekt" (NICHT in der Projektmappe) "Physical path" fest (in unserem Fall "D:\ASP-NET-Core\ASP-NET-Core-Projekte\MvcMovie\MvcMovie").

2.2. Bindung "Typ": "https".

2.3. "SSL-Zertifikat": "IIS Express Development Certificate".

2.4. OK klicken".

2,5. In "Anwendungspools" finden Sie den Namen "AspNetCoreMvcMovie" nach Namen.

2.5.1. In "Anwendungspool bearbeiten" setzen Sie ".NET CLR-Version" auf "Kein verwalteter Code".

2.5.2. OK klicken".

 enter image description here


3. Legen Sie erhöhte Berechtigungen für VS 2017 fest.

3.1. Wenn wir eine solche Massage haben: "Microsoft Visual Studio": "Für diese Aufgabe müssen die Berechtigungen der Anwendung erhöht sein", folgen Sie der Problembehandlung "(Methode 2)." Kompatibilitätsprobleme beheben "im nächsten Link: https: // social. technet.Microsoft.com/wiki/contents/articles/46441.visual-studio-2017-this-task-anforderung-die-Anwendung-zur-nach-erlaubtenpermissions.aspx

3.2 Nach Abschluss dieser Methode (Methode 2) wird VS-2017 gestartet.

3.3. Ausführen (im "Debug" -Modus) "MvcMovie" -Anwendung mit IIS-Profil (das für die Ausführung auf IIS Local ...) eingestellt ist. NICHT das IIS Express !!! ). In unserem Fall wird in "Schritt 1" das Profil mit dem Namen der aktuellen Anwendung ("MvcMovie") festgelegt.

3.4. Warten Sie, bis die Anwendung im Browser ausgeführt wird.

3,5. Anwendung schließen (Webbrowser schließen).

3.6. Gehen Sie zum Fenster "Kompatibilitäts-Fehlerbehebung" und klicken Sie auf "Weiter".

3.6.1. Klicken Sie anschließend auf "-> Ja, speichern Sie diese Einstellungen für dieses Programm".

3.6.2. Nachdem "Probleme beheben" mit "Speichern der Einstellungen" abgeschlossen ist, muss das Fenster "Problembehandlung ist abgeschlossen" angezeigt werden. Im Fenster "Fehlerbehebung wurde abgeschlossen" muss Folgendes angezeigt werden: "Probleme gefunden" -> "Inkompatibles Programm" -> "Behoben". Klicken Sie anschließend auf "-> Fehlerbehebung schließen".

4. Führen Sie ab VS-2017 (im Modus "Debug") erneut die Anwendung "MvcMovie" mit IIS-Profil (in unserem Fall mit dem Namen "MvcMovie") aus.

 enter image description here


2
Ted

Ich habe nach einer Lösung gesucht, die es mir ermöglicht, eine .NET-Core-Sub-App zu debuggen, während ich auf einer Website laufe, die klassischen ASP -Code hostet.

Looooookas Reverse-Proxy-Lösung hat für mich funktioniert, aber es hat einige Arbeit gekostet, um das herauszufinden. 

1.) Fügen Sie diese Zeile zu Startup.cs hinzu. 

app.UsePathBase("/core");  // core is the name of my subdirectory

Stellen Sie sicher, dass Sie es VOR der Zeile "app.UseStaticFiles ();" eingeben.

2.) Installieren Sie "URL Rewrite v2" und "Application Request Routing".

3.) Fügen Sie der Website IIS (/ core) einen Ordner hinzu und erstellen Sie eine web.config -Datei im folgenden Ordner:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="IISExpressReverseProxy" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions>
                    </conditions>
                    <action type="Rewrite" url="http://localhost:1306/core/{R:1}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

4.) Öffnen Sie die Projekteigenschaften in Visual Studio und wechseln Sie zur Registerkarte Debug. Ändern Sie die URL "Browser starten" in Ihre IIS - URL.

0
Mike Olund

Ich habe nur die Geschichte durchgesehen und bin über diese Frage gestolpert ... Wenn jemand auf diese Frage kommt, stellte sich heraus, dass die Lösung für mich eine recht einfache Lösung war Die App stellt einfach sicher, dass sie die grundlegende Authentifizierung mit HTTP verwendet (für den Debug-Teil) . Dann verwenden Sie in IIS einfach Url Rewrite, um einen Reverse-Proxy für Ihr http: // localhost: someport einzurichten. Netzkerninstanz . Das ist es. Problem gelöst ..__ Möglicherweise unterstützt url rewrite bald https, und in diesem Fall kann das auth basic, das HTTP verwendet, auch zum Debuggen verwendet werden. Was toll wäre ... Aber bisher löste dieses Setup alle meine Probleme.

0
Looooooka

Ich hatte das gleiche Problem für ein ASP.NET Core 2.2-Web-API-Projekt, das ich gegen IIS ausführen wollte.

launchsettings.json

  "iisSettings": {
    "windowsAuthentication": true,
    "anonymousAuthentication": true,
    "iis": {
      "applicationUrl": "http://localhost/AspNetCore22Starter",
      "sslPort": 443
    },

IIS

Konfigurieren Sie die https-Bindung. Es wird außerdem empfohlen, einen bestimmten Anwendungspool für die Webanwendung zu definieren, um den Anhängeprozess leichter aufzufinden

An Prozess anhängen

An Prozess anhängen (Strg-Alt-P) + w3wp.exe-Prozess suchen + den Prozess auswählen, dessen Benutzername = IIS APPPOOL\lautet:

 Hosting process for ASP.NET Core 2.2 application

0
Alexei

Ich habe alle obigen Vorschläge ausprobiert, aber nichts hat funktioniert, bis ich alle fehlenden Elemente zusammengefügt habe.

Die wesentlichen Teile des Debugging in IIS sind:

  • Richten Sie IIS korrekt auf Ihrem Dev ein. Maschine
  • Installieren eines SSL-Zertifikats für Ihre IIS - Site
  • Hinzufügen der Entwicklungszeit IIS vom Visual Studio-Installationsprogramm
  • Mindestens .NET Core SDK installieren 2.2
  • Einrichten Ihres Startprofils in Visual Studio zum Starten Ihres Browsers mit IIS.

.NET Core 2.2 ist erforderlich, um Ihre Site INNERHALB des Prozesses IIS auszuführen.

Hier ist mehr Detail: http://intrinsicinnovation.com/Articles/2019/01/08/debugging-asp-net-core-applications-within-iis/

0
Chris J