部署Asp Net Core 2.2至Godaddy后出现Error 403问题求助
我之前帮朋友搞定过类似的GoDaddy部署ASP.NET Core 2.2的坑,给你整理几个针对性的排查步骤,应该能解决你的500和403问题:
恢复并修正Web.config文件
不要直接删除Web.config!ASP.NET Core在IIS环境下依赖这个文件来托管进程,删除后IIS无法正确处理请求就会出现403。你需要恢复一个适配ASP.NET Core 2.2的Web.config,示例如下:<?xml version="1.0" encoding="utf-8"?> <configuration> <system.webServer> <handlers> <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" /> </handlers> <aspNetCore processPath="dotnet" arguments=".\YourAppName.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="InProcess" /> </system.webServer> </configuration>注意替换
YourAppName.dll为你实际发布生成的程序集名称,同时开启stdoutLogEnabled可以生成详细日志,帮你定位500错误的具体原因。检查GoDaddy的.NET Core运行时版本
ASP.NET Core 2.2需要对应版本的运行时支持,登录GoDaddy主机控制面板,找到「ASP.NET Settings」或「Runtime Settings」选项,确认已选择.NET Core 2.2作为运行时。如果面板里没有这个选项,明确要求GoDaddy的技术人员为你的主机安装该版本(虽然之前客服不给力,但这是他们的职责范围)。调整应用程序池设置
GoDaddy的应用程序池需要配置为兼容ASP.NET Core的模式:- 登录主机控制面板,找到「应用程序池」选项
- 找到你的网站对应的应用程序池
- 设置
.NET CLR版本为无托管代码,管道模式为集成
这个设置很关键,因为ASP.NET Core是自托管的,IIS仅作为反向代理,不需要托管.NET Framework代码。
排查403错误的额外原因
如果恢复Web.config后仍有403,需要检查:- 默认文档设置:确保网站的默认文档列表包含你的应用入口(比如
index.html、default.html,或者MVC的默认路由对应的页面) - 目录浏览权限:如果你的应用没有设置默认文档,IIS会返回403,这时候要么添加默认文档,要么关闭目录浏览(推荐前者)
- 默认文档设置:确保网站的默认文档列表包含你的应用入口(比如
查看日志定位具体问题
按照第一步的Web.config配置,部署后网站根目录会生成logs文件夹,里面的stdout日志文件会记录应用启动和运行时的所有错误信息——这是排查500错误最有效的方式,比如依赖缺失、数据库连接失败、配置文件错误等,都能在日志里找到明确提示。确认权限配置的准确性
虽然你说已经开了完全权限,但还是要确认:- 网站根目录(包括子文件夹)需要给
IIS_IUSRS和ApplicationPoolIdentity用户读取、执行权限 logs文件夹需要额外的写入权限,这样才能生成日志文件
在GoDaddy控制面板的「文件管理器」里可以调整文件夹权限,避免给Everyone完全权限(不安全),先给必要权限测试。
- 网站根目录(包括子文件夹)需要给
内容的提问来源于stack exchange,提问作者Mayank Bhuvnesh

