web-dev-qa-db-fra.com

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

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 ANCM en cours de traitement 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é également nettoyer et reconstruire.

Je viens de modifier le commentaire d'une méthode. Évidemment, j'ai aussi essayé 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 c'est un bogue de configuration dans la propriété .NET Core ou VIsual Studio ...

26
Giox

Merci à @ 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 IIS fichier de configuration/métabase Express trouvé?

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.

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

23
Giox
34
Legends

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

  1. Publication de deux sites Web principaux asp.net distincts
  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 le docs ,

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

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

15
Sнаđошƒаӽ