Ошибка HTTP 500.35 - несколько внутрипроцессных приложений ANCM в одном и том же процессе ASP.NET Core 3

34

С этого утра без каких-либо изменений в коде проекта, очень простого веб-API, одного контроллера и 3 метода, с Swagger, он больше не запускается, и я получаю ошибку:

Ошибка HTTP 500.35 - несколько внутрипроцессных приложений ANCM в одном процессе

Просмотрщик событий сообщает самое бесполезное сообщение:

Модуль IIS Express AspNetCore V2: не удалось запустить приложение «/ LM / W3SVC / 2 / ROOT / docs», код ошибки «0x80004005».

Перезагружал систему несколько раз.

Я использую Visual Studio 2019, приложение успешно скомпилировано, и несколько минут назад оно работало нормально. Новое программное обеспечение не было установлено, пакеты не добавлены. Пробовал также чистить и восстанавливать.

Я только что изменил комментарий метода. Очевидно, я пытался также восстановить предыдущий комментарий, но я всегда получаю одно и то же сообщение.

Что я могу сделать?

Сетевое ядро ​​все еще слишком нестабильно для профессионального использования?

ОБНОВИТЬ

Тот же код, запущенный из той же версии Visual Studio, но на другом ПК, работает правильно.

ОБНОВЛЕНИЕ 2

Ниже код приложения:

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

Вот так выглядит 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"
      }
    }
  }
}

но копирование проекта на другой ПК с той же версией Visual Studio работает нормально, поэтому похоже, что это ошибка конфигурации в свойстве .NET Core или VIsual Studio ...

Giox
источник
1
.NET Core используется многими производителями, в том числе самой Microsoft. Это совершенно стабильно. Проблема на вашей стороне. Тем не менее, здесь недостаточно, чтобы помочь вам. Ознакомьтесь с руководством по устранению неполадок в документации.
Крис Пратт
Я получаю ту же ошибку. Вы используете web.config?
Марсель
@ Марсел нет, я этим не пользуюсь
Giox
1
Я сделал, я исправил мой, изменив AspNetCoreModuleV2 на AspNetCoreModule, в web.config.
Марсель
2
Вам необходимо просмотреть фактический файл конфигурации, используемый VS / IIS Express, чтобы убедиться, что по ошибке два приложения .NET Core попадают в один и тот же пул. Модель в процессе не может поддерживать это.
Лекс Ли

Ответы:

50

В настоящее время это ошибка в VS2019 - (4 ноября 2019)

1.) Закройте свое решение

2.) Удалить applicationhost.configв папке .vs или удалить всю .vsпапку

Обычно эта .vsпапка находится рядом с файлом решения.

введите описание изображения здесь

3.) Перезапустите решение снова

Легенды
источник
Спасибо, это избавляет от необходимости заливать файл applicationhost.config.
CINCHAPPS
1
Исправил это для меня. Похоже, это
Роб Л
Это тот, который работал для меня. Опять моя проблема была во время отладки.
Аби П
1
Мой герой! Это мучило меня в течение нескольких дней!
Godrules500
Это определенно работает :)
Амит Филипс
28

Благодаря @Lex Li он дал мне решение.

Проблема была в applicationhost.config, файле метабазы, содержащем все параметры для запуска IISExpress Visual Studio для запуска вашего веб-приложения.

Для Visual Studio 2019 этот файл находится в

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

Для другой версии проверьте этот пост: Где находится файл конфигурации / метабазы ​​IIS Express?

по разделу у меня было следующее:

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

Где есть некоторые странные настройки, определенные

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

это, безусловно, было добавлено, когда я попытался установить в качестве начальной папки путь / docs.

Закомментирование этого параметра и еще одного в конце файла, связанного с этим путем, решило проблему.

Giox
источник
5
Вы спасатель! +1 Я только что удалил папки .vs для своего проекта, и теперь он работает (обе папки для решения и проекта) Спасибо
tscissors
1
У меня была та же проблема, и это исправило ее, однако я заметил, что вторая запись была автоматически добавлена ​​VS, когда я изменил свойство applicationUrl в iisExpress в launchSettings.json. Не уверен, почему это произойдет.
Ричи
@ Richie кажется, что это ошибка с VS. Он не удаляет старые приложения при изменении URL-адреса, как это должно быть при запуске приложения в процессе. Здесь есть отчет: developercommunity.visualstudio.com/content/problem/699245/… . Посмотрим, не закрыто ли это как Низкий Приоритет.
andre_ss6
18

Я получил ту же ошибку, когда я сделал следующее:

  1. Опубликованы два отдельных основных сайта asp.net
  2. В IIS созданы два веб-сайта в разделе «Веб-сайт по умолчанию», каждый из которых имеет физический путь, заданный для каждой из папок публикации в (1) соответственно.
  3. Теперь любой из сайтов, которые я открываю, первый работает, а второй дает эту ошибку.

Проблема:

Поскольку оба моих сайта находятся в разделе «Веб-сайт по умолчанию», они оба используют DefaultAppPool, что является причиной этой ошибки. Та же ошибка возникает, когда сайты не входят в «Веб-сайт по умолчанию», но используют один и тот же пул приложений.

Решение:

Как упоминалось в документах ,

Чтобы исправить эту ошибку, запустите приложения в отдельных пулах приложений IIS.

для меня эта проблема была решена, когда я начал использовать отдельные пулы приложений для каждого сайта.

Sнаđошƒаӽ
источник
2
Это сработало, а не другие. Спасибо.
Эрдоган