Azure App Service部署多dotnet应用报HTTP Error 500.35错误如何解决?
HTTP Error 500.35的触发条件是同一个IIS应用池进程中存在多个采用In-Process托管模式的ASP.NET Core应用。你当前的默认站点和第二个子站点均为.NET 5,默认启用In-Process托管,因此触发冲突;而.NET 2.1应用默认使用OutOfProcess托管,因此未触发报错。
你之前的操作未生效大概率是配置未正确覆盖全局默认值,可按以下顺序排查修复:
第一步:确认所有应用的托管模式全局强制配置为OutOfProcess
不要只修改csproj,要在每个应用的web.config中显式指定托管模式,优先级高于项目配置:
在web.config的<aspNetCore>节点添加hostingModel="outofprocess"属性,示例配置如下:<aspNetCore processPath="dotnet" arguments=".\你的应用.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="outofprocess"> </aspNetCore>注意必须给默认站点和第二个.NET 5子站点都添加该配置,仅修改子站点配置不会生效。
第二步:验证AspNetCoreModule版本配置正确
所有应用的web.config中handlers节点必须统一使用AspNetCoreModuleV2,避免模块版本混用导致的配置失效:<handlers> <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /> </handlers>第三步:清理Azure App Service残留配置
进入Azure门户的对应Web App服务,选择「配置」-「路径映射」,确认3个应用的虚拟目录配置路径、物理路径正确,没有冗余配置;之后重启整个应用服务,强制释放之前的In-Process进程资源。备用方案:拆分应用服务
如果以上配置修改后仍未生效,建议将第二个.NET 5子站点单独部署到独立的Azure Web App实例中,从根源避免同应用池的进程冲突。

内容的提问来源于stack exchange,提问作者Rafat Rashid

