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 ...
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.
Il s'agit actuellement d'un bug dans VS2019 4 novembre 2019)
1.) Fermez votre solution
2.) Supprimer applicationhost.config
Dans le dossier .vs
ou supprimez tout le dossier .vs
Le dossier .vs
Se trouve généralement à côté de votre fichier de solution.
--- (
3.) Redémarrez à nouveau votre solution
J'ai eu la même erreur lorsque j'ai fait ce qui suit:
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.