【发布时间】:2020-02-03 09:46:40
【问题描述】:
从今天早上开始,项目代码没有任何变化,一个非常简单的Web API,一个控制器和3个方法,用Swagger,它不再启动了,我得到了错误:
HTTP 错误 500.35 - 同一进程中的 ANCM 多个进程内应用程序
事件查看器报告最无用的消息:
IIS Express AspNetCore Module V2:无法启动应用程序 '/LM/W3SVC/2/ROOT/docs',错误代码'0x80004005'。
多次重启系统。
我正在使用 Visual Studio 2019,应用程序成功编译,几分钟前它运行良好。没有安装新软件,没有添加任何软件包。 也尝试过清理和重建。
我刚刚修改了一个方法的注释。显然,我也尝试过恢复之前的评论,但我总是收到相同的消息。
我能做什么?
net core 还是太不稳定而不能专业使用吗?
更新
从相同版本的 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");
});
}
}
}
这是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 版本的 PC 上处理项目工作正常,因此看起来这是 .NET Core 或 VIsual Studio 属性中的配置错误...
【问题讨论】:
-
.NET Core 已被许多开发人员用于生产环境,包括 Microsoft 本身。它非常稳定。问题就在你身边。但是,这里不足以帮助您。查看文档中的故障排除指南。
-
我遇到了同样的错误。你在使用 web.config 吗?
-
我愿意,我通过在 web.config 中将 AspNetCoreModuleV2 更改为 AspNetCoreModule 来修复我的问题。
-
您需要查看 VS/IIS Express 使用的实际配置文件,看看是否有两个 .NET Core 应用程序错误地进入同一个池。进程内模型无法支持。
-
@Chris :他们对这种互动感到沮丧是有道理的,IMO。我使用项目设置 -> 调试 UI 触摸了我的项目启动设置。我编辑了错误的东西(也是 IMO),因为 UI 存在缺陷,并且“应用程序 URL”很容易被误认为是“启动浏览器”设置。 更糟,我恢复了我的更改,但问题仍然存在于我从未接触过的文件中(下文讨论)。清理和重建不会修复该文件。删除配置不会修复文件。删除 .vs 文件夹确实解决了它,但在此过程中删除了调试器和其他个性化设置。
标签: c# asp.net-core