HTTP错误500.35-同一进程ASP.NET Core 3中的ANCM多个进程内应用程序

Gio*_*iox 10 c# asp.net-core

从今天早上开始,没有对项目代码进行任何更改,一个非常简单的Web API,一个控制器和3个方法(带有Swagger),它不再启动,并且出现错误:

HTTP错误500.35-同一进程中的ANCM多个进程内应用程序

事件查看器报告最无用的消息:

IIS Express AspNetCore模块V2:无法启动应用程序'/ LM / W3SVC / 2 / ROOT / docs',错误代码'0x80004005'。

重新启动系统几次。

我正在使用Visual Studio 2019,该应用程序已成功编译,几分钟前它运行良好。没有安装新软件,没有添加软件包。也尝试过清理和重建。

我刚刚修改了方法的注释。显然,我也尝试过恢复以前的评论,但总是收到相同的消息。

我能做什么?

网核是否仍然不稳定以致无法专业使用?

更新

从同一版本的Visual Studio启动的相同代码在另一台PC上正常运行。

更新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");
            });
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是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"
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但是在具有相同Visual Studio版本的另一台PC上处理项目效果很好,因此看起来是.NET Core或VIsual Studio属性中的配置错误...

Sна*_*ƒаӽ 34

当我执行以下操作时,我遇到了同样的错误:

  1. 发布了两个独立的asp.net核心网站
  2. 在 IIS 中,在“默认网站”下创建了两个网站,每个网站的物理路径分别设置为 (1) 中的每个发布文件夹。
  3. 现在,无论我首先打开哪个站点都可以工作,而第二个站点会出现该错误。

问题:

由于我的两个站点都在“默认网站”下,因此它们都使用 DefaultAppPool,这是导致此错误的原因。当站点不在“默认网站”下但使用相同的应用程序池时,会发生相同的错误。

解决方案:

正如文档中所述,

要修复此错误,请在单独的 IIS 应用程序池中运行应用程序。

对我来说,当我开始为每个站点使用单独的应用程序池时,这个问题得到了解决。

  • 我能够通过使用进程外模式解决这个问题。这允许将两者托管在同一应用程序池中 (2认同)

Gio*_*iox 12

感谢@Lex Li,他给了我解决方案。

问题出在applicationhost.config中,该元数据库文件包含Visual Studio为运行Web应用程序而启动IISExpress的所有设置。

对于Visual Studio 2019,此文件位于

$(solutionDir)\.vs\{projectName}\config\applicationhost.config
Run Code Online (Sandbox Code Playgroud)

对于其他版本,请查看以下文章: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>
Run Code Online (Sandbox Code Playgroud)

在哪里定义了一些奇怪的设置

<application path="/docs" applicationPool="docs AppPool">
   <virtualDirectory path="/" physicalPath="E:\Projects\MyProjectName" />
</application> 
Run Code Online (Sandbox Code Playgroud)

当我尝试将/ docs路径设置为开始文件夹时,肯定已经添加了该文件。

注释掉此设置,并在文件末尾与此路径相关的另一个设置解决了该问题。

  • 你是救命稻草!+1我刚刚为我的项目删除了.vs文件夹,现在它正在工作(用于解决方案和项目的文件夹)感谢 (4认同)

Mic*_*ajj 7

我通过删除发布解决方案后生成的 web.config 文件中的 V2 解决了这个问题。

<handlers>
    <add name="aspNetCore" path="*" verb="*" 
        modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
Run Code Online (Sandbox Code Playgroud)

代替

<handlers>
    <add name="aspNetCore" path="*" verb="*"
        modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
Run Code Online (Sandbox Code Playgroud)


Leg*_*nds 5

当前是VS2019中的错误

1.)关闭您的解决方案

2)删除applicationhost.config的文件夹.vs 删除整个.vs文件夹

.vs文件夹通常位于您的解决方案文件旁边。

在此处输入图片说明

3.)再次重新启动您的解决方案

  • 为我修好了。这似乎解决了很多类似的问题...... (3认同)
  • 2020 年 12 月仍然是一个错误,这仍然修复了它。谢谢。 (3认同)
  • 谢谢,这省去了翻阅 applicationhost.config 的麻烦。 (2认同)
  • 我的英雄!这困扰了我好几天了! (2认同)
  • 对我来说略有不同:我首先在 Windows 资源管理器中搜索“applicationhost.config”。然后关闭Visual Studio。注意到该文件被自动删除。重新启动VS并再次工作。另请注意“.vs”文件夹是一个隐藏文件夹。 (2认同)
  • 2021 年 1 月仍然是一个错误。请修复它! (2认同)

小智 5

我有同样的问题。

在 .csproj 文件中的 Tag 中添加此行: <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>

虽然是 500.30 错误,但它也修复了 500.35 问题。

HTTP 错误 500.30 - ANCM 进程内启动失败

我希望对你有帮助。

此致。