ASP.NET MVC多环境下如何选定config文件?物理服务器需做哪些配置?
.NET 4 多环境物理服务器配置清单
1. 系统环境变量配置
- 三台服务器分别添加系统级环境变量,变量名可自定义(建议统一用
ASPNET_ENV),dev服务器赋值为Dev,test服务器赋值为Test,prod服务器赋值为Prod - 配置完成后执行
iisreset命令重启IIS服务,确保IIS工作进程可以读取到最新的环境变量 - 环境变量主要用于自动化部署流程识别当前服务器环境,自动调用对应环境的XDT配置文件做转换,无需人工指定环境参数,避免部署错配置。如果你的应用代码需要感知当前运行环境,也可以直接读取该变量值使用
2. IIS站点专属配置
- 应用池基础配置:三台服务器的站点应用池都选择
.NET Framework v4.0.x版本,托管管道模式设置为集成模式;prod环境建议开启应用池定时回收策略,dev/test环境可关闭回收方便调试 - 站点运行配置:
- dev/test环境可绑定内网域名,无需配置SSL证书,开启详细错误页、目录浏览权限方便排查问题;prod环境绑定公网域名,配置可信SSL证书,开启HTTPS强制跳转,关闭详细错误页、目录浏览避免泄露敏感信息
- 给站点根目录分配
IIS AppPool\你的应用池名称用户的读取、执行权限,prod环境不要额外开放写入权限,dev/test可根据调试需求临时开放
- 环境标识注入(可选):如果需要在应用配置里固化环境标识,可配合XDT转换在
web.config的appSettings节点写入当前环境值,示例转换规则如下:<appSettings> <add key="RuntimeEnvironment" value="Test" xdt:Transform="SetAttributes(value)" xdt:Locator="Match(key)" /> </appSettings>
3. 服务器基础安全配置
- dev/test服务器可开放远程桌面、FTP等部署权限,prod服务器严格限制登录权限,仅给运维人员开放,建议走自动化流水线完成部署,不允许直接登录修改配置
- prod服务器开启Windows防火墙,仅开放80、443等业务必要端口;dev/test可根据调试需求开放更多端口
- 可根据业务需求修改服务器hosts文件,比如dev/test服务器将依赖的第三方接口域名指向测试环境地址,避免和生产环境调用冲突
内容的提问来源于stack exchange,提问作者mox-du
相关产品推荐
相关产品推荐

