部署在IIS 10的ASP.NET Core应用私有IP本地访问故障排查
确认ASP.NET Core托管模块已安装
部署ASP.NET Core应用必须安装对应版本的ASP.NET Core托管模块,否则IIS无法将请求转发到.NET Core进程。通过「控制面板 > 程序 > 启用或关闭Windows功能」检查,确保勾选「Internet Information Services > 万维网服务 > 应用程序开发功能 > ASP.NET Core」。验证站点绑定的IP有效性
用服务器上的ipconfig命令核对绑定的192.168.x.x是否为服务器实际存在的私有IP。若IP配置错误,请求会直接被重置;也可选择绑定「全部未分配」,允许所有IP访问。检查Windows防火墙出站规则
除了已启用的入站规则,需确保防火墙允许ASP.NET Core应用的出站流量。可临时关闭防火墙测试,若恢复正常,再添加允许dotnet.exe或应用进程的出站规则。配置ASP.NET Core应用的监听地址
ASP.NET Core默认仅监听localhost,需修改配置让其监听服务器私有IP或所有IP:- 在
Program.cs中添加监听配置:var builder = WebApplication.CreateBuilder(args); builder.WebHost.ConfigureKestrel(options => { options.ListenAnyIP(5000); // 监听所有IP的5000端口 // 或指定私有IP:options.Listen(IPAddress.Parse("192.168.0.78"), 5000); }); - 或在站点「高级设置 > 环境变量」中添加
ASPNETCORE_URLS=http://192.168.0.78:5000。
- 在
检查应用池身份权限
应用池身份需拥有应用文件目录的访问权限,以及启动.NET Core进程的权限。可临时将应用池身份改为「LocalSystem」测试,若能访问则调整为专用账户并配置目录权限。确认站点物理路径与应用池设置
站点物理路径必须指向ASP.NET Core应用的publish目录,且应用池需选择无托管代码类型(ASP.NET Core为自托管,IIS仅做反向代理),选错托管池会导致请求处理失败。查看日志定位具体问题
查看IIS站点日志(「站点 > 日志」)或Windows事件查看器的应用日志(「事件查看器 > Windows日志 > 应用程序」),日志会明确指出进程启动失败、端口占用等具体错误原因。
内容的提问来源于stack exchange,提问作者mashaji

