从今天早上开始,没有对项目代码进行任何更改,一个非常简单的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
当我执行以下操作时,我遇到了同样的错误:
问题:
由于我的两个站点都在“默认网站”下,因此它们都使用 DefaultAppPool,这是导致此错误的原因。当站点不在“默认网站”下但使用相同的应用程序池时,会发生相同的错误。
解决方案:
正如文档中所述,
要修复此错误,请在单独的 IIS 应用程序池中运行应用程序。
对我来说,当我开始为每个站点使用单独的应用程序池时,这个问题得到了解决。
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路径设置为开始文件夹时,肯定已经添加了该文件。
注释掉此设置,并在文件末尾与此路径相关的另一个设置解决了该问题。
我通过删除发布解决方案后生成的 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)
当前是VS2019中的错误
1.)关闭您的解决方案
2)删除applicationhost.config的文件夹.vs 或删除整个.vs文件夹
该.vs文件夹通常位于您的解决方案文件旁边。
3.)再次重新启动您的解决方案
小智 5
我有同样的问题。
在 .csproj 文件中的 Tag 中添加此行:
<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
虽然是 500.30 错误,但它也修复了 500.35 问题。
我希望对你有帮助。
此致。