HTTP-Fehler 500.35 - ANCM Mehrere In-Process-Anwendungen in demselben Prozess ASP.NET Core 3

34

Ab heute Morgen ohne Änderungen am Code des Projekts, einer sehr einfachen Web-API, einem Controller und drei Methoden, mit Swagger, startet es nicht mehr und ich bekomme den Fehler:

HTTP-Fehler 500.35 - ANCM Mehrere In-Process-Anwendungen im selben Prozess

Die Ereignisanzeige meldet die nutzloseste Nachricht:

IIS Express AspNetCore-Modul V2: Anwendung '/ LM / W3SVC / 2 / ROOT / docs', Fehlercode '0x80004005' konnte nicht gestartet werden.

Das System wurde mehrmals neu gestartet.

Ich verwende Visual Studio 2019, die Anwendung wurde erfolgreich kompiliert und vor einigen Minuten funktionierte sie einwandfrei. Es wurde keine neue Software installiert, keine Pakete hinzugefügt. Versucht auch sauber und wieder aufzubauen.

Ich habe gerade den Kommentar einer Methode geändert. Natürlich habe ich auch versucht, den vorherigen Kommentar wiederherzustellen, aber ich erhalte immer die gleiche Nachricht.

Was kann ich machen?

Ist der Netzkern immer noch zu instabil, um professionell eingesetzt zu werden?

AKTUALISIEREN

Derselbe Code, der von derselben Version von Visual Studio, aber auf einem anderen PC gestartet wurde, wird ordnungsgemäß ausgeführt.

UPDATE 2

Unter dem Code der Anwendung:

startup.cs

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.FileProviders;
using Microsoft.Extensions.Hosting;
using Microsoft.OpenApi.Models;
using System;
using System.IO;
using System.Reflection;

namespace WFP_GeoAPIs
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        public void ConfigureServices(IServiceCollection services)
        {

            services.AddControllers(); 
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo() { Title = "Geographic APIs", Version = "v1.0.0" });
                var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.XML";
                var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);    
                c.IncludeXmlComments(xmlPath);
            });
        }

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseStaticFiles(new StaticFileOptions
            {
                FileProvider = new PhysicalFileProvider(
                 Path.Combine(Directory.GetCurrentDirectory(), "swagger-ui")),
                RequestPath = "/swagger-ui"
            });

            app.UseHttpsRedirection();
            app.UseRouting();
            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });

            app.UseSwagger();    
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "GeoAPIs Ver 1.0.0");
                c.RoutePrefix = "docs";
                c.InjectStylesheet("/swagger-ui/custom.css");
            });
        }
    }
}

Hier ist die launchsettings.json:

{
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "iisSettings": {
    "windowsAuthentication": false, 
    "anonymousAuthentication": true, 
    "iisExpress": {
      "applicationUrl": "http://localhost:51319",
      "sslPort": 44345
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "docs",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "WFP_GeoAPIs": {
      "commandName": "Project",
      "launchBrowser": true,
      "launchUrl": "docs",
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

Das Kopieren des Projekts auf einem anderen PC mit derselben Visual Studio-Version funktioniert jedoch einwandfrei. Es sieht also so aus, als ob es sich um einen Konfigurationsfehler in der .NET Core- oder VIsual Studio-Eigenschaft handelt.

Giox
quelle
1
.NET Core wird in der Produktion von vielen Entwicklern verwendet, einschließlich Microsoft selbst. Es ist vollkommen stabil. Das Problem ist auf Ihrer Seite. Es gibt hier jedoch nicht genug, um Ihnen zu helfen. Überprüfen Sie die Anleitung zur Fehlerbehebung in den Dokumenten.
Chris Pratt
Ich erhalte den gleichen Fehler. Verwenden Sie eine web.config?
Marcel
@ Marcel nein ich benutze es nicht
Giox
1
Ich habe mein Problem behoben, indem ich AspNetCoreModuleV2 in der web.config in AspNetCoreModule geändert habe.
Marcel
2
Sie müssen die tatsächliche Konfigurationsdatei überprüfen, die von VS / IIS Express verwendet wird, um festzustellen, ob versehentlich zwei .NET Core-Apps in denselben Pool verschoben werden. Das In-Process-Modell kann dies nicht unterstützen.
Lex Li

Antworten:

50

Es ist derzeit ein Fehler in VS2019 - (4. November 2019)

1.) Schließen Sie Ihre Lösung

2.) Löschen applicationhost.configin Ordner .vs oder löschen Sie den gesamten .vsOrdner

Der .vsOrdner befindet sich normalerweise neben Ihrer Lösungsdatei.

Geben Sie hier die Bildbeschreibung ein

3.) Starten Sie Ihre Lösung erneut

Legenden
quelle
Vielen Dank, dies erspart das mühsame Übergießen von applicationhost.config.
CINCHAPPS
1
Es wurde für mich behoben. Dies scheint viele ähnliche Probleme zu beheben ...
Rob L
Dies ist derjenige, der für mich gearbeitet hat. Wieder war mein Problem beim Debuggen.
Abi P
1
Mein Held! Das hat mich seit Tagen geplagt!
Godrules500
Das funktioniert definitiv :)
Amit Philips
28

Dank @Lex Li hat er mir die Lösung gegeben.

Das Problem befand sich in der Datei applicationhost.config, der Metabasisdatei, die alle Einstellungen für den IISExpress-Start von Visual Studio zum Ausführen Ihrer Webanwendung enthielt.

Für Visual Studio 2019 befindet sich diese Datei in

$(solutionDir)\.vs\{projectName}\config\applicationhost.config

Weitere Versionen finden Sie in diesem Beitrag: Wo befindet sich die IIS Express-Konfigurations- / Metabasisdatei?

Unter dem Abschnitt hatte ich folgendes:

<sites>    
  <site name="WebSite1" id="1" serverAutoStart="true">
    <application path="/">
      <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" />
    </application>
    <bindings>
      <binding protocol="http" bindingInformation=":8080:localhost" />
    </bindings>
  </site>

  <site name="MyProjectName" id="2">
    <application path="/" applicationPool="MyProjectName AppPool">
      <virtualDirectory path="/" physicalPath="E:\Projects\MyProjectName" />
    </application>

   <application path="/docs" applicationPool="docs AppPool">
      <virtualDirectory path="/" physicalPath="E:\Projects\MyProjectName" />
    </application>

    <bindings>
      <binding protocol="http" bindingInformation="*:59386:localhost" />
      <binding protocol="https" bindingInformation="*:44345:localhost" />
    </bindings>
  </site>
  <siteDefaults>
    <!-- To enable logging, please change the below attribute "enabled" to "true" -->
    <logFile logFormat="W3C" directory="%AppData%\Microsoft\IISExpressLogs" enabled="false" />
    <traceFailedRequestsLogging directory="%AppData%\Microsoft" enabled="false" maxLogFileSizeKB="1024" />
  </siteDefaults>
  <applicationDefaults applicationPool="Clr4IntegratedAppPool" />
  <virtualDirectoryDefaults allowSubDirConfig="true" />
</sites>

Wo gibt es eine seltsame Einstellung definiert durch

<application path="/docs" applicationPool="docs AppPool">
   <virtualDirectory path="/" physicalPath="E:\Projects\MyProjectName" />
</application> 

Das wurde sicherlich hinzugefügt, als ich versucht habe, den Pfad / docs als Startordner festzulegen.

Das Auskommentieren dieser Einstellung und einer weiteren am Ende der Datei, die sich auf diesen Pfad bezieht, hat das Problem behoben.

Giox
quelle
5
Du bist Lebensretter! +1 Ich habe gerade .vs-Ordner für mein Projekt gelöscht und jetzt funktioniert es (beide Ordner für Lösung und Projekt) Danke
tscissors
1
Ich hatte das gleiche Problem und dieses Problem wurde behoben. Ich bemerkte jedoch, dass der zweite Eintrag automatisch von VS hinzugefügt wurde, als ich die Eigenschaft "applicationUrl" unter iisExpress in launchSettings.json änderte. Ich bin mir nicht sicher, warum das passieren würde.
Richie
@Richie es scheint, dass das ein Fehler mit VS ist. Ältere Apps werden nicht gelöscht, wenn Sie die URL ändern. Dies sollte der Fall sein, wenn die App in Bearbeitung ausgeführt wird. Hier gibt es einen Bericht: Developercommunity.visualstudio.com/content/problem/699245/… . Mal sehen, ob es nicht als niedrigere Priorität geschlossen ist.
andre_ss6
18

Ich habe den gleichen Fehler erhalten, als ich Folgendes getan habe:

  1. Veröffentlichte zwei separate asp.net-Kernwebsites
  2. In IIS wurden unter "Standardwebsite" zwei Websites erstellt, für die jeweils ein physischer Pfad für jeden der Veröffentlichungsordner in (1) festgelegt wurde.
  3. Nun funktioniert jede der Websites, die ich zuerst öffne, und die zweite gibt diesen Fehler aus.

Problem:

Da sich beide meiner Websites unter "Standardwebsite" befinden, verwenden beide DefaultAppPool, was die Ursache für diesen Fehler ist. Der gleiche Fehler tritt auf, wenn sich die Websites nicht unter "Standardwebsite" befinden, sondern denselben App-Pool verwenden.

Lösung:

Wie in den Dokumenten erwähnt ,

Führen Sie Apps in separaten IIS-Anwendungspools aus, um diesen Fehler zu beheben.

Für mich wurde dieses Problem behoben, als ich anfing, separate App-Pools für jede Site zu verwenden.

Sнаđошƒаӽ
quelle
2
Es hat funktioniert, nicht andere. Vielen Dank.
Erdogan