Erreur HTTP 500.35 - Plusieurs applications en cours de traitement ANCM dans le même processus ASP.NET Core 3

34

A partir de ce matin sans aucune modification du code du projet, une API Web très simple, un contrôleur et 3 méthodes, avec Swagger, ça ne démarre plus et j'obtiens l'erreur:

Erreur HTTP 500.35 - Plusieurs applications en cours de traitement ANCM dans le même processus

L'observateur d'événements rapporte le message le plus inutile:

Module IIS Express AspNetCore V2: impossible de démarrer l'application '/ LM / W3SVC / 2 / ROOT / docs', ErrorCode '0x80004005'.

Redémarré le système plusieurs fois.

J'utilise Visual Studio 2019, l'application se compile avec succès et il y a quelques minutes, cela fonctionnait bien. Aucun nouveau logiciel n'a été installé, aucun package n'a été ajouté. Essayé aussi nettoyer et reconstruire.

Je viens de modifier le commentaire d'une méthode. Évidemment j'ai essayé aussi de restaurer le commentaire précédent mais je reçois toujours le même message.

Que puis-je faire?

Le noyau net est-il encore trop instable pour être utilisé professionnellement?

MISE À JOUR

Le même code lancé à partir de la même version de Visual Studio mais sur un autre PC fonctionne correctement.

MISE À JOUR 2

Ci-dessous le code de l'application:

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");
            });
        }
    }
}

Voici le 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"
      }
    }
  }
}

mais copier le projet sur un autre PC avec la même version de Visual Studio fonctionne très bien, il semble donc que ce soit un bogue de configuration dans la propriété .NET Core ou VIsual Studio ...

Giox
la source
1
.NET Core est utilisé en production par de nombreux développeurs, dont Microsoft lui-même. Il est parfaitement stable. Le problème est de votre côté. Cependant, il n'y a pas assez ici pour vous aider. Consultez le guide de dépannage dans la documentation.
Chris Pratt
Je reçois la même erreur. Utilisez-vous un web.config?
Marcel
@Marcel non, je ne l'utilise pas
Giox
1
Oui, j'ai corrigé le mien en changeant AspNetCoreModuleV2 en AspNetCoreModule, dans le web.config.
Marcel
2
Vous devez examiner le fichier de configuration réel utilisé par VS / IIS Express pour voir si par erreur deux applications .NET Core vont dans le même pool. Le modèle en cours ne peut pas prendre en charge cela.
Lex Li

Réponses:

50

C'est actuellement un bug dans VS2019 - (4 novembre 2019)

1.) Fermez votre solution

2.) Supprimer applicationhost.configdans le dossier .vs ou supprimer tout le .vsdossier

Le .vsdossier est généralement à côté de votre fichier de solution.

entrez la description de l'image ici

3.) Redémarrez à nouveau votre solution

Légendes
la source
Merci, cela vous évite d'avoir à verser sur applicationhost.config.
CINCHAPPS
1
Fixé pour moi. Cela semble résoudre de nombreux problèmes similaires ...
Rob L
C'est celui qui a fonctionné pour moi. Encore une fois, mon problème était lors du débogage.
Abi P
1
Mon héros! Cela me tourmente depuis des jours!
Godrules500
Cela fonctionne certainement :)
Amit Philips
28

Grâce à @Lex Li, il m'a donné la solution.

Le problème se trouvait dans le fichier applicationhost.config, le fichier de métabase contenant tous les paramètres du lancement IISExpress par Visual Studio pour exécuter votre application Web.

Pour Visual Studio 2019, ce fichier se trouve dans

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

Pour une autre version, consultez cet article: où se trouve le fichier de configuration / métabase IIS Express?

sous la section j'avais:

<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>

Où il y a un cadre étrange défini par

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

qui a certainement été ajouté lorsque j'ai essayé de définir comme dossier de démarrage le chemin / docs.

Commentant ce paramètre et un autre à la fin du fichier lié à ce chemin a résolu le problème.

Giox
la source
5
Vous sauvez des vies! +1 Je viens de supprimer les dossiers .vs de mon projet et maintenant cela fonctionne (les deux dossiers pour la solution et le projet) Merci
tscissors
1
J'ai eu le même problème et cela l'a corrigé, cependant, j'ai remarqué que la deuxième entrée a été ajoutée automatiquement par VS lorsque j'ai modifié la propriété "applicationUrl" sous iisExpress dans launchSettings.json. Je ne sais pas pourquoi cela se produirait.
Richie
@Richie, il semble que ce soit un bug avec VS. Il ne supprime pas les anciennes applications lorsque vous modifiez l'URL, ce qui devrait être le cas lorsque l'application s'exécute en cours de traitement. Il y a un rapport ici: developercommunity.visualstudio.com/content/problem/699245/… . Voyons voir s'il n'est pas fermé en tant que priorité inférieure.
andre_ss6
18

J'ai eu la même erreur lorsque j'ai fait ce qui suit:

  1. Publication de deux sites Web distincts sur asp.net
  2. Dans IIS, créé deux sites Web sous «Site Web par défaut», chacun ayant un chemin d'accès physique défini pour chacun des dossiers de publication dans (1) respectivement.
  3. Maintenant, quel que soit le site que j'ouvre, le premier fonctionne, et le second donne cette erreur.

Problème:

Étant donné que mes deux sites sont sous "Site Web par défaut", ils utilisent tous les deux DefaultAppPool, qui est la cause de cette erreur. La même erreur se produit lorsque les sites ne sont pas sous "Site Web par défaut" mais utilisent le même pool d'applications.

Solution:

Comme mentionné dans les documents ,

Pour corriger cette erreur, exécutez les applications dans des pools d'applications IIS distincts.

pour moi, ce problème a été résolu lorsque j'ai commencé à utiliser des pools d'applications distincts pour chaque site.

Sнаđошƒаӽ
la source
2
Cela a fonctionné, pas les autres. Merci.
Erdogan