AWS Elastic Beanstalk如何为不同ASP.Net Core网站分配应用池
解决方法
你可以通过以下两种方式实现站点与独立应用池的绑定,优先使用第一种配置即可:
1. 直接修改部署清单绑定应用池
你已经在aws-windows-deployment-manifest.json中声明了自定义应用池,只需要在同文件的applications节点下,为每个站点单独指定关联的应用池即可,示例配置如下:
{ "manifestVersion": 1, "iisConfig": { "appPools": [ { "name": "AppPool1", "managedPipelineMode": "Integrated", "managedRuntimeVersion": "" }, { "name": "AppPool2", "managedPipelineMode": "Integrated", "managedRuntimeVersion": "" } ] }, "applications": [ { "name": "站点1", "iisApp": { "path": "站点1的物理路径", "appPool": "AppPool1", "bindings": [ { "protocol": "http", "port": 80, "hostHeader": "你的第一个站点域名" } ] } }, { "name": "站点2", "iisApp": { "path": "站点2的物理路径", "appPool": "AppPool2", "bindings": [ { "protocol": "http", "port": 80, "hostHeader": "你的第二个站点域名" } ] } } ] }
注意:ASP.NET Core应用为自托管运行,不需要IIS托管运行时支持,建议将
managedRuntimeVersion设置为空值,避免多余的运行时校验报错。
2. 用PowerShell脚本兜底配置
如果上述配置不生效,可以在部署包根目录新建install.ps1脚本,通过环境可用的IISAdministration模块完成绑定,脚本内容如下:
# 导入IIS管理模块 Import-Module IISAdministration # 替换为你实际的IIS站点名称,绑定到对应应用池 $siteFirst = Get-IISSite "站点1的IIS显示名" $siteFirst.Applications["/"].ApplicationPoolName = "AppPool1" $siteFirst.CommitChanges() $siteSecond = Get-IISSite "站点2的IIS显示名" $siteSecond.Applications["/"].ApplicationPoolName = "AppPool2" $siteSecond.CommitChanges() # 重启应用池使配置生效 Restart-IISAppPool AppPool1 Restart-IISAppPool AppPool2
脚本无需额外配置,EB部署Windows应用时会自动执行根目录下匹配install*.ps1规则的脚本。
内容的提问来源于stack exchange,提问作者SystemDLL
相关产品推荐
相关产品推荐

