WebDeploy发布后遇HTTP Error 502.5进程失败,JSON解析错误求排查
我来帮你搞定这个头疼的502.5错误!遇到JSON解析失败但没指明具体文件确实让人摸不着头脑,下面几个方法能帮你挖出更详细的错误细节,找到问题根源:
启用.NET Core标准输出日志
直接修改站点根目录下的web.config文件,找到<aspNetCore>节点,添加日志相关配置:<aspNetCore processPath="dotnet" arguments=".\YourApplication.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />注意要先在站点根目录创建
logs文件夹,并且确保IIS应用池的身份对这个文件夹有写入权限。之后重新启动站点,失败时的详细错误堆栈(包括具体出错的JSON文件、行号和语法问题)会被写入logs目录下的日志文件里,一目了然。本地直接运行发布后的程序
把发布到服务器的文件拷贝到本地,打开命令行切换到文件目录,执行:dotnet YourApplication.dll控制台会直接输出完整的错误信息,包括到底是哪个JSON配置文件(不一定是
appsettings.json,可能是appsettings.Production.json这类环境特定文件)出了问题,甚至能看到具体的语法错误位置,比如漏了逗号、引号不匹配这类小问题。检查所有JSON配置文件的语法
别只盯着默认的appsettings.json!环境特定的配置文件(比如appsettings.Production.json)很可能藏着语法错误。你可以用Visual Studio打开这些文件,它会自动标红语法问题;或者用本地的JSON校验工具扫一遍所有配置文件,确保格式完全正确。排查文件权限问题
有时候看似是解析错误,实际是IIS应用池的身份没有读取JSON配置文件的权限。给应用池身份(比如IIS AppPool\你的应用池名称)添加对站点根目录的读取权限,再试试启动站点。
内容的提问来源于stack exchange,提问作者Chris

