Ich habe mit einer neuen Funktion experimentiert, die mit .net Core SDK 2.2 geliefert wird und angeblich die Leistung um rund 400% verbessern soll.
Beeindruckend, also habe ich es in meinem ABP- Projekt ( ASP.NET Boilerplate ) ausprobiert
Template asp.net core mvc 4.0.2.0
Ich habe meiner web.mv.cproj
Datei Folgendes hinzugefügt
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
</ItemGroup>
Leider glaube ich nicht, dass diese Version des ABP-Frameworks kompatibel ist, da das Projekt einfach nicht ausgeführt werden kann und Folgendes auslöst: (eventuell)
HTTP-Fehler 500.30 - ANCM-In-Process-Startfehler
Ich habe die Protokolle nach dem Einstellen stdoutLogEnabled="true"
in der web.config und dem erneuten Versuch überprüft - aber keine Einträge.
Hat jemand Erfolg gehabt, das aktuelle ABP im Prozess-Setup gegen einen asp.net-Kern auszuführen?
Ich denke, dies ist möglicherweise nur in ABP vNext verfügbar.
Antworten:
In ASP.NET Core 2.2 wurde mit IIS ein neues Server- / Hosting-Muster namens IIS InProcess-Hosting veröffentlicht . Um Inprocess-Hosting zu aktivieren, wird das csproj-Element AspNetCoreHostingModel hinzugefügt, um das HostingModel in der Datei web.config auf Inprocess zu setzen. Außerdem verweist die web.config auf ein neues Modul namens AspNetCoreModuleV2, das für das Inprocess-Hosting erforderlich ist.
Wenn der Zielcomputer, auf dem Sie bereitstellen, nicht über ANCMV2 verfügt, können Sie das IIS InProcess-Hosting nicht verwenden. In diesem Fall besteht das richtige Verhalten darin, entweder das Dotnet-Hosting-Bundle auf dem Zielcomputer zu installieren oder ein Downgrade auf das AspNetCoreModule durchzuführen.
Quelle: jkotalik (Github)
Versuchen Sie, den Abschnitt in csproj zu ändern (bearbeiten Sie ihn mit einem Texteditor).
Zu dem Folgendem ...
Quelle (Github)
quelle
InProcess
und er scheint gut zu funktionieren. Vielen Dank!AspNetCoreModule
die Debug-Ausgabe auf VS2017 unterbrochen wird. https://github.com/aspnet/AspNetCore/issues/6609Ab ASP.NET Core 3.0+ und Visual Studio 19, Version 16.3+.
Dort gibt es keine AspNetCoreHostingModel-Eigenschaft. Die Auswahl des Hosting-Modells finden Sie in den Eigenschaften des Projekts. Klicken Sie im Solution Explorer mit der rechten Maustaste auf den Projektnamen. Klicken Sie auf Eigenschaften.
Klicken Sie auf das Menü Debug.
Scrollen Sie nach unten, um die Option Hosting-Modell zu finden.
Wählen Sie Out of Process.
Speichern Sie das Projekt und führen Sie IIS Express aus.
UPDATE Für die Serverbereitstellung:
Wenn Sie Ihre Anwendung auf dem Server veröffentlichen, gibt es eine Webkonfigurationsdatei wie folgt:
Ändern Sie den Wert von 'hostingModel' wie folgt von 'inprocess' in 'outofprocess':
quelle
In meinem Fall hatte ich kürzlich eine Datenbankverbindungszeichenfolge in meiner Datei appstettings.json geändert. Ich vermute, dass dieser Fehler ohne Protokollierung oder Fehlerbehebung den Fehler "HTTP-Fehler 500.30 - ANCM In-Process Start Failure" verursacht hat.
Ich bemerkte zufällig den Austausch zwischen x-freestyler und Tahir Khalid, bei dem Tahir beim Start ein IOC-Problem vorschlug. Da sich mein Start in letzter Zeit nicht geändert hatte, meine appstettings.json jedoch - Ich habe festgestellt, dass die Verbindungszeichenfolge in meiner appstettings.json die Ursache des Problems war. Ich habe eine falsche Verbindungszeichenfolge korrigiert und das Problem wurde behoben. Vielen Dank an die ganze Community.
quelle
Event Logs
, das auf eine fehlerhafte JSON-Einstellung hinwies.Wenn Sie Visual Studio verwenden und Instanzen davon ausführen, schließen Sie alle.
Sie sollten einen
.vs
Unterordner finden, in dem sich Ihre Visual Studio-Lösung (.sln
Datei) befindet.Löschen Sie den
.vs
Ordner und versuchen Sie es erneut mit dem in Bearbeitung befindlichen Hosting-Modell.quelle
ASP.NET Core 2.2 oder höher: Deaktivieren Sie für eine eigenständige 64-Bit-Bereitstellung (x64), die das In-Process-Hosting-Modell verwendet, den App-Pool für 32-Bit-Prozesse (x86).
Wählen Sie in der Seitenleiste Aktionen von IIS Manager> Anwendungspools die Option Standardeinstellungen für Anwendungspool festlegen oder Erweiterte Einstellungen aus. Suchen Sie nach 32-Bit-Anwendungen aktivieren und setzen Sie den Wert auf False.
Quelle: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-3.0#create-the-iis-site
quelle
Ich habe den gleichen Fehler auf meinem Entwicklungscomputer unter Windows 10 erhalten. Der Fehler wurde nach der Installation des Dotnet Core-Hosting-Bundles nicht behoben. Ich musste zur Ereignisanzeige gehen, um den detaillierten Fehler zu erhalten. Ihr zugrunde liegendes Problem (falls vorhanden) kann sich von meinem unterscheiden. Wenn Sie sich auf einem Windows-Computer befinden, bietet die Ereignisanzeige Details. Hoffe das hilft jemandem.
quelle
Im Mai war es nur ein Tippfehler, der das Parsen der JSON-Einstellungsdatei beschädigt und verhindert
quelle
Ich habe mir die Windows-Protokolle unter Anwendung angesehen. Es zeigte die Fehlermeldung und die Stapelverfolgung an. Ich fand heraus, dass mir ein Ordner namens node_modules fehlte. Ich habe diesen Ordner erstellt und damit behoben.
Ich habe keine Änderungen an web.config oder der Projektdatei vorgenommen. Meine .NETCoreApp-Version war 3.1
quelle
Das Entfernen der AspNetCoreHostingModel-Zeile in der .cproj-Datei hat bei mir funktioniert. In einem anderen Projekt von mir gab es keine solche Linie, die gut funktionierte.
quelle
Ich hatte ein ähnliches Problem beim Versuch, in einem .Net Core-Projekt, das ich kürzlich von 2.0 auf 3.0 aktualisiert hatte, von OutOfProcess-Hosting zu InProcess-Hosting zu wechseln.
Da es keinen wirklich hilfreichen Fehler gab und ich tagelang versucht hatte, dieses Problem zu beheben, fand ich schließlich eine Lösung für meinen Fall, die ich zu teilen glaubte, falls sie für andere hilfreich ist, die damit zu kämpfen haben.
Für mich wurde es durch einige Microsoft.AspNetCore- Pakete verursacht.
Nach dem Entfernen aller referenzierten Microsoft.AspNetCore-Pakete mit einer Version unter 3.0.0 (für diese war kein Upgrade verfügbar> = 3.0.0 verfügbar) trat dieser Fehler nicht mehr auf.
Dies waren die Pakete, die ich entfernt habe;
Alle anderen Microsoft.AspNetCore-Pakete mit einer Version größer oder gleich 3.0.0 haben einwandfrei funktioniert.
quelle
Diese Veröffentlichungsprofileinstellung wurde für mich behoben:
Konfigurieren Sie das Veröffentlichungsprofil -> Einstellungen -> Optionen für Site-Erweiterungen ->
quelle
Meins ist wegen UseKestrel () in program.cs. Es sollte .ConfigureKestrel () in 2.2 sein
Weitere Informationen unter https://docs.microsoft.com/en-us/aspnet/core/migration/21-to-22?view=aspnetcore-2.2&tabs=visual-studio&WT.mc_id=-blog-scottha#update-kestrel -Aufbau
quelle
Ich habe ein anderes Problem gefunden, bei dem zunächst dieselbe Fehlermeldung wie in der Frage angezeigt wird. Ich teile dies hier, damit Sie vor dem Ändern der Projektdatei sicherstellen können, dass Ihre Dienste ordnungsgemäß registriert sind.
Ich verwende auch .netcore 2.2 und habe dieselbe Fehlermeldung erhalten, sodass ich die Projektdatei von InProcess in OutOfProcess wie in der ausgewählten Antwort geändert habe. Danach fand ich die wahre Ursache für mein Problem, als ich "Implementierungstyp kann nicht instanziiert werden" erhielt: Die Ursache dafür war für mich:
services.AddScoped<IMyService, IMyService>();
anstatt
services.AddScoped<IMyService, MyService>();
In Verbindung stehender Beitrag: Warum wird für meinen generischen Dienst die Fehlermeldung "Implementierungstyp kann nicht instanziiert werden" angezeigt?
quelle
Laden Sie das Installationsprogramm für das .NET Core Hosting Bundle über den folgenden Link herunter:
Aktuelles Installationsprogramm für das .NET Core Hosting Bundle (direkter Download)
quelle
Nachdem ich einen ganzen Tag lang mit mir selbst gekämpft habe, um meine asp.net-Kernanwendung auf IIS mit InProcess-Hosting zu hosten, bin ich endlich stolz und erleichtert, dass dies gelöst wurde. Stundenlanges Durchgehen derselben Foren, Blogs und SO-Fragen, die ihr Bestes gaben, um das Problem zu lösen, blieb ich immer noch stecken, nachdem ich alle oben genannten Ansätze befolgt hatte. Jetzt werde ich hier meine Erfahrung bei der Lösung beschreiben.
Schritt 1: Erstellen Sie eine Website in IIS
Schritt 2: Stellen Sie sicher, dass für den AppPool für die Website die .Net CLR-Version auf "Kein verwalteter Code" und die Eigenschaft "32-Bit-Anwendungen aktivieren" in AppPool -> Erweiterte Einstellungen auf false festgelegt ist
Schritt 3: Stellen Sie sicher, dass Ihr Projekt auf .Net Core 2.2 verweist
Schritt 4: Fügen Sie die folgende Zeile in Ihre Datei startup.cs in der ConfigureServices-Methode ein
Schritt 6: Fügen Sie die folgenden Nuget-Pakete hinzu
Schritt 7: Fügen Sie Ihrer .csproj-Datei die folgende Zeile hinzu
Schritt 8: Erstellen und veröffentlichen Sie Ihren Code (vorzugsweise x64-Bitness) )
Schritt 9: Stellen Sie sicher, dass Sie den Hostnamen Ihrer Website in der Datei etc / hosts hinzugefügt haben
Schritt 10: Starten Sie den World Wide Web Publishing Service neu
Testen Sie nun Ihre asp.net-Kernanwendung und sie sollte mithilfe von InProcess-Hosting gehostet werden. Um zu überprüfen, ob Ihre App im InProcess-Modus gehostet wird, überprüfen Sie die Antwortheader und sie sollte die folgende Zeile enthalten
Server: Microsoft-IIS / 10.0 (die IIS-Version kann von Ihrem System abhängen)
Update : Laden Sie das ASP.Net Core Hosting Bundle herunter und installieren Sie es, damit es funktioniert
quelle
Wow, es gibt viele Antworten auf diese Frage, aber ich hatte das gleiche Problem und meine Lösung war anders als alles, was ich hier gelesen habe, und auch ganz einfach.
Ich hatte Probleme mit der Bereitstellung meiner App in Azure mit den richtigen Umgebungseinstellungen, also habe ich mit der Datei launchsettings.json herumgespielt und den Wert der Variablen ASPNETCORE_ENVIRONMENT im IIS-Profil von "Entwicklung" in "Produktion" geändert. . Das Zurücksetzen auf "Entwicklung" hat das Problem für mich behoben.
quelle
In meinem Fall war es ein falscher Wert in der Datei appsettings.json. Der Wert war
.\SQLEXPRESS
und es funktionierte, nachdem ich es geändert hatte.\\SQLEXPRESS
quelle
Für mich wurde DBContext fälschlicherweise in HostedService injiziert. Ich habe es so umgeschrieben:
Wie soll ich eine DbContext-Instanz in einen IHostedService einfügen?
und alles hat gut funktioniert!
quelle
Weil die Anwendung abstürzt. Für wen sparen Sie Zeit bei dieser Ausnahme!
Der Fehlercode besagt, dass eine Ausnahme ausgelöst wird, da in der Anfangsphase keine Datei gefunden werden kann. Siehe den Abschnitt Umgebungseinstellungen. In meinem Szenario hat es funktioniert, als ich den folgenden Code geändert habe
zu
Weil ich appsettings.development.json habe, aber nicht appsettings.production.json. Warum es keine Datei finden kann, weil es am richtigen Ort nach etwas anderem sucht.
quelle
Mit .Net Core 2.2 sollten Sie das InProcess-Hosting-Modell verwenden können, da es natürlich schneller ist: Alles wird in IIS verarbeitet, ohne dass ein zusätzlicher HTTP-Hop zwischen IIS und dem Kestrel-Server Ihrer App erforderlich ist. Möglicherweise möchten Sie dieses Tag hinzufügen: AspNetCoreModuleV2 Beachten Sie die neue Option AspNetCoreModuleV2 gegenüber der älteren Option AspNetCoreModule. Eine weitere wichtige Aufgabe besteht darin, das Windows-Anwendungsereignisprotokoll zu untersuchen, um den Schuldigen zu ermitteln. Obwohl Fehlermeldungen dort möglicherweise kryptisch sind, verweisen sie gelegentlich auf die genauen Zeilennummern im Code, die den Fehler verursacht haben. Wenn Sie CI / CD mit TFS verwenden, gibt es möglicherweise Umgebungsvariablen in der Datei appsettings.json, die nicht ordnungsgemäß durch die angegebenen Werte ersetzt wurden, und dies war eine der Ausnahmequellen für mich.
quelle
Ich hatte ein Problem in meiner
Program.cs
Datei. Ich habe versucht, eine Verbindung herzustellenAddAzureKeyVault
, die vor langer Zeit gelöscht wurde.Fazit :
quelle
In meinem Fall hatte ich eine Migration, die fehlschlug, wenn sie in einer bestimmten Umgebung in Azure ausgeführt wurde, aber in dev einwandfrei lief. Da der Dienst so konfiguriert ist, dass die Migrationen im Rahmen des Startvorgangs ausgeführt werden, schlägt der eigentliche Start der Webanwendung fehl.
Ich habe die Migration manuell in der Umgebung ausgeführt, um das Problem zu ermitteln, und sie dann angepasst, um die Datenunterschiede in dieser Umgebung zu beheben.
Wenn jemand weiß, wie ich den Migrationsfehler hätte sehen können, ohne ihn direkt in der Datenbank manuell auszuführen, wäre das nützlich.
quelle
Ich hatte nur das gleiche Problem. Es stellte sich heraus, dass es ein dummer Fehler auf meiner Seite war.
In der ServiceCollection habe ich versucht, eine zu registrieren
abstract class
wo
MyClass
warabstract
für mich ein unbekannter grund hehe :)Also Leute, wenn du hast,
HTTP Error 500.30 - ANCM In-Process Start Failure
überprüfe einfach deineServiceCollection
quelle
Für mich war alles in Ordnung, aber das Problem war auf die Veröffentlichung durch verschiedene VS-Versionen zurückzuführen, komisch !!! (letzter VS 2019 (16.4.2)). Wenn ich die Anwendung mit VS 2017 veröffentliche, funktioniert sie einwandfrei.
Das eigentliche Problem liegt in der Abhängigkeits-JSON-Datei (z. B.
MyWebApp.deps.json
) im Veröffentlichungsordner. Hoffe es hilft jemandem.quelle
runtimes/win-x64/native
nicht sicher, ob dies auf denselben Ordner oder auf einen Pfad verweistCould not find inprocess request handler. Captured output from invoking hostfxr: Error: An assembly specified in the application dependencies manifest (Cues.Web.deps.json) was not found: package: 'runtime.win-x64.Microsoft.NETCore.App', version: '2.2.8' path: 'runtimes/win-x64/native/mscordaccore_amd64_amd64_4.6.28207.03.dll'
Bitte sehen Sie meine vorherige Antwort in demselben Thread, um das Ganze zu verstehen. Entschuldigung für mehrere Antworten
Nach weiteren Untersuchungen trat das Problem auf, da VS 2019 den neuesten Patch (Standardverhalten von VS) von .net Core 2.2 auswählte, der für mich 2.2.8 ist, um die Anwendung zu veröffentlichen. Wir können dies auf eine bestimmte Version Ihrer Wahl beschränken, indem wir verwenden
Siehe hier . Dies löste schließlich mein Problem, obwohl der neueste Patch nicht angewendet wurde. Ich kann aus jedem VS 2017 oder VS 2019 erstellen, beide veröffentlichen die Anwendung für die .net Core 2.2.0-Laufzeitversion
quelle
Ich hatte den gleichen Fehler und das Problem war mit Microsoft.Extension.Primitives. Die Version des Pakets war nicht mit der .net-Kernversion kompatibel. Und dies bezog sich auf eines der Projekte, auf die sich mein Projekt bezog.
Einmal hatte ich die Microsoft.Extension.Primitives in diesem Projekt geändert. Dieses Problem wurde behoben.
Überprüfen Sie in den Azure-Ereignisprotokollen, welchen Fehler Sie erhalten und ob er mit einer Paketreferenz zusammenhängt. Versuchen Sie das oben erwähnte, was ich erwähnt habe.
Da Nuget-Pakete eng mit der .net-Version gekoppelt sind. Sie müssen lediglich sicherstellen, dass alle Pakete, die auf das Projekt verweisen, auch eng mit der .net-Version gekoppelt sind.
quelle
Nun, für mich hatte ich einen komplizierten App-Start, in dem ich meinen eigenen WebHostBuilder erstellt hatte. Dies funktionierte gut, schlug jedoch fehl, als ich den InProcess-Hosting-Modus ausprobierte. Ich gehe davon aus, dass ich etwas verpasst habe, das ich in WebHostBuilder aufgerufen habe. Deshalb habe ich sichergestellt, dass ich immer WebHost.CreateDefaultBuilder (args) aufrufe und dann zusätzliche Änderungen vornehme - im Grunde wie bei den neuen App-Vorlagen.
Rufen Sie für asp core 3.1-Vorlagen, die IHostBuilder (nicht IWebHostBuilder) verwenden, ConfigureWebHostDefaults auf
quelle
In meinem Fall hat keine der oben genannten Lösungen funktioniert. Aber als ich die Datei myproject.vspscc aus dem Solution Explorer entfernte, war das Problem gelöst.
quelle
Mein Problem wurde behoben, indem ein dedizierter App-Pool für AspNetCoreModuleV2 ausgeführt wurde
Beschreibung:
Ich habe mehrere Anwendungen unter demselben App-Pool ausgeführt. Einige der Anwendungen wurden ausgeführt
Die Anwendung, die den Fehler verursacht hat, hat AspNetCoreModuleV2 ausgeführt
Ich habe einen neuen App-Pool für AspNetCoreModuleV2 erstellt, der mein Problem behoben hat.
quelle
Ich hatte einen Laufzeitfehler in Startup.cs. Schuljungenfehler - Ich habe eine kleine Änderung an dieser Datei vorgenommen, meine App jedoch vor der Bereitstellung in Azure nicht lokal ausgeführt. Die App wurde nicht erfolgreich gestartet und ich habe die 500.30-Fehlerseite erhalten.
quelle