You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Packer在AWS EC2 Windows虚拟机中运行.NET应用并解决访问问题

排查AWS ALB访问显示Windows默认网站的问题

一、IIS站点配置检查

  • 确认部署的.NET WebAPI站点是否已设置为默认站点,或是否修改了默认站点的物理路径指向你的应用发布目录。如果默认站点未替换,ALB流量会优先走默认站点。
  • 检查站点的绑定信息:是否绑定了正确的IP(建议选“全部未分配”)、端口(默认80/443),无冲突绑定导致你的站点无法接收请求。
  • 查看IIS管理器中的站点状态:确保你的.NET应用站点处于“已启动”状态,排除应用池错误或权限问题导致的站点停止。

二、Packer部署脚本验证

  • 检查第二个AMI的Packer脚本,确认完成以下操作:
    • 克隆代码后,是否用dotnet publish生成了正确的Release版本发布包(目标框架net8.0)。
    • 是否将发布文件复制到自定义IIS目录(如C:\inetpub\wwwroot\YourAPI),而非默认的C:\inetpub\wwwroot(默认站点目录)。
    • 是否创建了新IIS站点并关联到该目录,或修改了默认站点的物理路径。仅复制文件到自定义目录但未配置站点,默认站点不会自动指向它。
    • 脚本中是否执行了iisreset或重启应用池的操作,确保配置生效。

三、EC2实例与ALB关联检查

  • 确认ALB的目标组是否正确关联EC2实例,且实例健康检查状态为“健康”。若健康检查失败,ALB可能不会转发流量到目标实例。
  • 检查目标组的健康检查路径:是否设置为你的.NET应用的健康端点(如/health),而非默认的/(默认站点根路径)。若用默认路径,即使你的站点未正常运行,只要默认站点响应,健康检查就会通过,导致流量仍流向默认站点。
  • 验证EC2实例的安全组:允许ALB所在安全组访问实例的80/443端口,确保流量能到达实例。

四、应用权限与日志排查

  • 检查IIS应用池的身份:是否设置为拥有应用目录读写权限的账户(如ApplicationPoolIdentity,需确保该账户对发布目录有权限),权限不足会导致应用无法启动,IIS自动 fallback到默认站点。
  • 查看IIS的站点日志(默认路径C:\inetpub\logs\LogFiles)和.NET应用的本地日志,确认请求是否到达你的站点,还是直接被默认站点处理。若无你的应用的请求记录,说明流量未路由到目标站点。

解决方法示例

若需通过Packer修改默认站点物理路径,以下是关键PowerShell代码片段:

# 发布.NET应用
dotnet publish "C:\repo\YourAPI.csproj" -c Release -o "C:\inetpub\wwwroot\YourAPI"

# 修改默认站点物理路径
Import-Module WebAdministration
Set-ItemProperty 'IIS:\Sites\Default Web Site' -name physicalPath -value 'C:\inetpub\wwwroot\YourAPI'

# 重启应用池使配置生效
Restart-WebAppPool -Name 'DefaultAppPool'

同时,更新ALB目标组的健康检查路径为你的应用健康端点(如/api/health),确保仅当你的应用正常运行时,ALB才会转发流量。

内容的提问来源于stack exchange,提问作者Bianca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 20:12:11