【IIS HTTP 500.30】HTTP Error 500.30 - ASP.NET Core app failed to start
IIS 网站 Http 500.30 错误 解决方法
·
记录一次解决 IIS 网站 HTTP 500.30 解决思路和方法
技术背景:
名称 | 内容 |
---|---|
语言 | C# .NET 8 |
框架 | WebApi |
昨天一如往常的上线一个后台Api网站,编译=》发布=》打包=》新建网站到IIS=》开启网站=》访问
一切的一切都像某个巧克力一样丝滑。直到访问网站,直接500.03
HTTP Error 500.30 - ASP.NET Core app failed to start
Common solutions to this issue:
The app failed to start
The app started but then stopped
The app started but threw an exception during startup
Troubleshooting steps:
Check the system event log for error messages
Enable logging the application process' stdout messages
Attach a debugger to the application process and inspect
For more guidance on diagnosing and handling these errors, visit Troubleshoot ASP.NET Core on Azure App Service and IIS.
检查网站logs下的日志,发现没有被记录
以为是 appsettings.json 文件有问题 。
检查了 数据库链接字符串
检查了json文件中的括号,逗号等 符号错误
更改过后依旧报错。
以下是解决思路
1、打开 “事件查看器” =》“Windows日志” =》“应用程序”
2、检查事件记录中的报错信息,从下到上看
来源为.NET 运行时的记录的错误为,因为无法访问某个log文件,所以程序自动退出了
后两个记录的是CLR worker 报错
根据以上线索,可以联想出 500.30是网站启动时初始化失败的报错,但是IIS中的网站依旧启动了。
根据第一张的报错信息,可以看出是日志文件没有权限访问导致的问题
找到目标文件,右键==“属性”== =》“安全(选项卡)” 观察到此时多出了一个网站 和应用程序池命名并不一致的用户组
查询得知,Winserver中 在IIS7.5之后,网站启动时,会初始化整个项目,并创建一个和应用程序池一样名称的 虚拟用户 启动w3wp.exe到计算机任务中,用来做文件的访问用户。
至此,答案水落石出。
因为创建网站时,随手创建的名称,导致了更改正式名称之后网站的应用程序池与文件用户不一致,没有权限访问日志文件,导致的无法正确启动网站
解决方案
1、找到IIS中网站的 “身份验证”
2、编辑 “匿名身份验证”,将特定用户切换至"应用程序池标识"
3、设置网站根目录权限,新建安全用户,给到完全控制的权限
请注意:IIS AppPool 的大小写和空格
4、重启网站,即可正常访问
本文参考文章
更多推荐
所有评论(0)