Erro HTTP 500.35 - Vários aplicativos em processo ANCM no mesmo processo ASP.NET Core 3

34

A partir desta manhã, sem alterações no código do projeto, uma API Web muito simples, um controlador e três métodos, com o Swagger, ele não inicia mais e eu recebo o erro:

Erro HTTP 500.35 - Vários aplicativos em processo ANCM no mesmo processo

O visualizador de eventos relata a mensagem mais inútil:

Módulo V2 do AspNetCore do IIS Express: falha ao iniciar o aplicativo '/ LM / W3SVC / 2 / ROOT / docs', ErrorCode '0x80004005'.

Reiniciou o sistema várias vezes.

Estou usando o Visual Studio 2019, o aplicativo foi compilado com sucesso e, alguns minutos atrás, estava funcionando bem. Nenhum novo software foi instalado, nenhum pacote foi adicionado. Tentei também limpar e reconstruir.

Acabei de modificar o comentário de um método. Obviamente, tentei também restaurar o comentário anterior, mas sempre recebo a mesma mensagem.

O que eu posso fazer?

O núcleo da rede ainda é instável demais para ser usado profissionalmente?

ATUALIZAR

O mesmo código lançado da mesma versão do Visual Studio, mas em outro PC, é executado corretamente.

ATUALIZAÇÃO 2

Abaixo do código do aplicativo:

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

Aqui está o 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"
      }
    }
  }
}

mas lidar com o projeto em outro PC com a mesma versão do Visual Studio funciona bem; portanto, parece que há um erro de configuração na propriedade .NET Core ou VIsual Studio ...

Giox
fonte
11
O .NET Core está em uso na produção por muitos desenvolvedores, incluindo a própria Microsoft. É perfeitamente estável. O problema está do seu lado. No entanto, não há o suficiente aqui para ajudá-lo. Consulte o guia de solução de problemas nos documentos.
Chris Pratt
Estou recebendo o mesmo erro. Você está usando um web.config?
Marcel
@Marcel não, eu não estou usando-o
Giox
11
Corrigi o meu alterando o AspNetCoreModuleV2 para AspNetCoreModule, no web.config.
Marcel
2
Você precisa revisar o arquivo de configuração real usado pelo VS / IIS Express para ver se, por engano, dois aplicativos .NET Core vão para o mesmo pool. O modelo em processo não pode suportar isso.
Lex Li

Respostas:

50

Atualmente, é um bug no VS2019 - (4 de novembro de 2019)

1.) Feche sua solução

2.) Excluir applicationhost.configna pasta .vs ou excluir toda a .vspasta

A .vspasta fica ao lado do seu arquivo de solução normalmente.

insira a descrição da imagem aqui

3.) Reinicie sua solução novamente

Legendas
fonte
Obrigado, isso evita o incômodo de passar pelo applicationhost.config.
CINCHAPPS 18/11/19
11
Corrigido para mim. Isso parece resolver um monte de problemas semelhantes ...
Rob L
Este é o que funcionou para mim. Novamente, meu problema foi durante a depuração.
Abi P
11
Meu heroi! Isso me atormentou por dias!
Godrules500 27/03
Isso definitivamente funciona :)
Amit Philips
28

Graças a @Lex Li, ele me deu a solução.

O problema estava no applicationhost.config, o arquivo da metabase que contém todas as configurações para a inicialização do IISExpress pelo Visual Studio para executar seu aplicativo Web.

Para o Visual Studio 2019, esse arquivo está localizado em

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

Para outra versão, verifique este post: Onde está o arquivo de configuração / metabase do IIS Express?

na seção, eu tinha o seguinte:

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

Onde houver alguma configuração estranha definida por

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

que certamente foi adicionado quando tentei definir como pasta inicial o caminho / docs.

Comentar essa configuração e outra no final do arquivo relacionado a esse caminho resolveu o problema.

Giox
fonte
5
Você é um salva-vidas! +1 Acabei excluído pastas .VS para o meu projeto e agora está trabalhando (ambas as pastas para solução e projeto) Agradecimentos
tscissors
11
Eu tinha o mesmo problema e isso foi corrigido, no entanto, notei que a segunda entrada foi adicionada automaticamente pelo VS quando modifiquei a propriedade "applicationUrl" no iisExpress em launchSettings.json. Não sei por que isso aconteceria.
Richie
@ Richie, parece que é um bug com o VS. Não está excluindo os aplicativos mais antigos quando você altera o URL, como deveria ser quando o aplicativo é executado em processo. Há um relatório aqui: developercommunity.visualstudio.com/content/problem/699245/… . Vamos ver se não está fechado como prioridade mais baixa.
andre_ss6
18

Eu recebi o mesmo erro quando fiz o seguinte:

  1. Publicou dois sites principais em asp.net
  2. No IIS, criou dois sites em "Site Padrão", cada um com o caminho físico definido para cada uma das pastas de publicação em (1), respectivamente.
  3. Agora, qualquer um dos sites que eu abrir primeiro funcionará, e o segundo causará esse erro.

Problema:

Como meus dois sites estão em "Site Padrão", ambos usam o DefaultAppPool, que é a causa desse erro. O mesmo erro ocorre quando os sites não estão em "Site Padrão", mas usam o mesmo pool de aplicativos.

Solução:

Conforme mencionado nos documentos ,

Para corrigir esse erro, execute aplicativos em pools de aplicativos IIS separados.

para mim, esse problema foi resolvido quando comecei a usar pools de aplicativos separados para cada site.

Sнаđошƒаӽ
fonte
2
Funcionou, não outros. Obrigado.
Erdogan