.NET Core应用本地正常,部署至IIS 10服务器出现404错误求助
老哥,我碰到过好几个类似的情况,给你列几个最可能的排查点,按顺序试一遍应该能解决:
先确认服务器装了.NET Core Hosting Bundle
这是核心前提!IIS本身没法直接运行.NET Core应用,必须安装这个配套组件。你可以去服务器的「控制面板→程序和功能」里找有没有「Microsoft .NET Core Hosting Bundle」的条目,没有的话赶紧装和你开发环境匹配的版本(比如你用.NET Core 3.1就装对应3.1的bundle),装完记得重启IIS或者整个服务器。检查应用池的关键设置
应用池的.NET CLR版本必须设为「无托管代码」——因为.NET Core是跨平台独立运行的,不需要IIS的传统托管环境。操作步骤:IIS管理器→找到你的应用池→右键「高级设置」→把.NET CLR版本改成「无托管代码」,然后重启应用池。验证发布文件的完整性
从VS发布时选「文件夹」目标,然后把整个发布文件夹的内容完整复制到IIS站点目录,别只挑几个文件。可以对比下开发环境bin目录和服务器上的文件,确保web.config、你的应用dll、依赖包这些核心文件都没缺失。检查web.config的配置细节
打开服务器上的web.config,重点看aspNetCore节点:<aspNetCore processPath="dotnet" arguments=".\YourApp.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />把
stdoutLogEnabled设为true,同时在站点目录下建个logs文件夹,这样能生成详细的运行日志,方便定位具体错误。另外确认processPath和arguments指向的路径是对的。确认站点物理路径和权限
IIS站点的物理路径必须指向你发布文件的根目录,而且应用池的标识(比如AppPoolIdentity)要有这个目录的读取权限。右键站点目录→「属性→安全」→添加AppPool\你的应用池名称,给它「读取」和「执行」权限。测试服务器本地直接运行应用
在服务器上打开命令行,cd到站点目录,执行dotnet YourApp.dll,看应用能不能正常启动。然后用服务器本地的浏览器访问http://localhost:5000(或你配置的端口),如果能访问,说明应用本身没问题,问题出在IIS配置;如果本地跑也报错,那就是发布的应用有依赖缺失或者代码问题。
内容的提问来源于stack exchange,提问作者Jim S

