Błąd HTTP 500.35 - Wiele aplikacji wewnątrzprocesowych ANCM w tym samym procesie ASP.NET Core 3

34

Od dziś rano bez żadnych zmian w kodzie projektu, bardzo prosty interfejs API sieci Web, jeden kontroler i 3 metody, dzięki Swagger nie uruchamia się już więcej i pojawia się błąd:

Błąd HTTP 500.35 - Wiele aplikacji wewnątrzprocesowych ANCM w tym samym procesie

Przeglądarka zdarzeń zgłasza najbardziej bezużyteczną wiadomość:

Moduł IIS Express AspNetCore V2: Nie można uruchomić aplikacji „/ LM / W3SVC / 2 / ROOT / docs”, kod błędu „0x80004005”.

Zrestartowałem system kilka razy.

Korzystam z programu Visual Studio 2019, aplikacja została pomyślnie skompilowana i kilka minut temu działała dobrze. Żadne nowe oprogramowanie nie zostało zainstalowane, nie dodano żadnych pakietów. Próbowałem także wyczyścić i odbudować.

Właśnie zmodyfikowałem komentarz metody. Oczywiście próbowałem również przywrócić poprzedni komentarz, ale zawsze otrzymuję ten sam komunikat.

Co mogę zrobić?

Czy rdzeń sieci jest nadal zbyt niestabilny, aby można go było używać profesjonalnie?

AKTUALIZACJA

Ten sam kod uruchomiony z tej samej wersji programu Visual Studio, ale na innym komputerze działa poprawnie.

AKTUALIZACJA 2

Poniżej kod aplikacji:

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

Oto plik 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"
      }
    }
  }
}

ale kopiowanie projektu na innym komputerze z tą samą wersją Visual Studio działa dobrze, więc wygląda na to, że jest to błąd konfiguracji we właściwości .NET Core lub VIsual Studio ...

Giox
źródło
1
.NET Core jest wykorzystywany w produkcji przez wielu programistów, w tym przez samego Microsoft. Jest idealnie stabilny. Problem jest po twojej stronie. Jednak nie ma tu wystarczającej ilości pomocy. Sprawdź przewodnik rozwiązywania problemów w dokumentach.
Chris Pratt
Otrzymuję ten sam błąd. Czy używasz pliku web.config?
Marcel
@Marcel nie, nie używam go
Giox,
1
Robię, naprawiłem mój, zmieniając AspNetCoreModuleV2 na AspNetCoreModule w pliku web.config.
Marcel
2
Musisz przejrzeć rzeczywisty plik konfiguracyjny używany przez VS / IIS Express, aby sprawdzić, czy przez pomyłkę dwie aplikacje .NET Core przechodzą do tej samej puli. Model wewnątrzprocesowy tego nie obsługuje.
Lex Li

Odpowiedzi:

50

Obecnie jest to błąd w VS2019 - (4 listopada 2019 r.)

1.) Zamknij swoje rozwiązanie

2.) Usuń applicationhost.configw folderze .vs lub usuń cały .vsfolder

.vsFolder jest obok pliku rozwiązanie zwykle.

wprowadź opis zdjęcia tutaj

3.) Uruchom ponownie rozwiązanie

Legendy
źródło
Dzięki, to oszczędza kłopotów związanych z zalewaniem applicationhost.config.
CINCHAPPS,
1
Naprawiłem to dla mnie. To wydaje się naprawiać wiele podobnych problemów ...
Rob L
Ten działał dla mnie. Znowu mój problem występował podczas debugowania.
Abi P
1
Mój bohater! To nęka mnie od wielu dni!
Godrules500
To zdecydowanie działa :)
Amit Philips
28

Dzięki @Lex Li dał mi rozwiązanie.

Problem polegał na pliku applicationhost.config, pliku metabazy zawierającym wszystkie ustawienia uruchamiania IISExpress przez Visual Studio w celu uruchomienia aplikacji internetowej.

W przypadku programu Visual Studio 2019 ten plik znajduje się w

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

W przypadku innej wersji sprawdź ten post: Gdzie znajduje się plik konfiguracji / metabazy IIS Express?

w sekcji miałem następujące:

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

Gdzie są jakieś dziwne ustawienia zdefiniowane przez

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

które z pewnością zostało dodane, gdy próbowałem ustawić jako folder początkowy ścieżkę / docs.

Skomentowanie tego ustawienia i innego na końcu pliku związanego z tą ścieżką rozwiązało problem.

Giox
źródło
5
Jesteś ratownikiem! +1 Właśnie usunąłem foldery .vs dla mojego projektu i teraz działa (oba foldery do rozwiązania i projektu) Dzięki
tscissors
1
Miałem ten sam problem i to naprawiłem, ale zauważyłem, że drugi wpis został automatycznie dodany przez VS, kiedy zmodyfikowałem właściwość „applicationUrl” w iisExpress w launchSettings.json. Nie jestem pewien, dlaczego tak się stanie.
Richie
@Richie wydaje się, że to błąd w VS. Nie usuwa starszych aplikacji po zmianie adresu URL, co powinno być, gdy aplikacja działa w trakcie przetwarzania. Tutaj jest raport: developercommunity.visualstudio.com/content/problem/699245/… . Zobaczmy, czy nie jest zamknięty jako Niższy priorytet.
andre_ss6,
18

Ten sam błąd wystąpił, gdy wykonałem następujące czynności:

  1. Opublikowałem dwie oddzielne strony internetowe asp.net
  2. W usługach IIS utworzono dwie witryny pod „Domyślną witryną”, każda z fizyczną ścieżką ustawioną odpowiednio dla każdego z folderów publikowania w (1).
  3. Teraz którakolwiek z witryn, które otworzę pierwsza, działa, a druga daje ten błąd.

Problem:

Ponieważ obie moje witryny znajdują się w obszarze „Domyślna witryna internetowa”, obie używają DefaultAppPool, co jest przyczyną tego błędu. Ten sam błąd występuje, gdy witryny nie znajdują się w „Domyślnej witrynie sieci Web”, ale korzystają z tej samej puli aplikacji.

Rozwiązanie:

Jak wspomniano w dokumentach ,

Aby naprawić ten błąd, uruchom aplikacje w osobnych pulach aplikacji IIS.

dla mnie ten problem został rozwiązany, kiedy zacząłem używać osobnych pul aplikacji dla każdej witryny.

Sнаđошƒаӽ
źródło
2
Działało, a nie inne. Dzięki.
Erdogan