ASP.NET Core多站点启动配置与环境变量设置问题求助
ASP.NET Core多站点启动配置与环境变量设置问题求助
看起来你遇到的是多项目同时启动时的端口冲突和IIS Express权限配置典型问题,我来一步步帮你梳理解决思路:
一、解决Self-Host(Development配置)的端口冲突问题
你碰到的System.IO.IOException: 地址已被占用错误,核心原因是两个项目都绑定了默认HTTPS端口443,导致端口争抢。解决这个问题的关键是给两个项目分配唯一的端口+主机头,同时确保本地能解析自定义域名。
具体操作步骤:
- 修改各自项目的
launchSettings.json
找到每个项目下Properties/launchSettings.json文件,分别配置不同的端口和专属域名:- 主站(test.###.com)配置可以保留443端口(如果没被其他服务占用),加上主机头:
"profiles": { "Development": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, "applicationUrl": "https://test.###.com:443;http://test.###.com:80", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } } - API站(api.test.###.com)换一个未被占用的HTTPS端口(比如44301),同样绑定专属主机头:
"profiles": { "Development": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, "applicationUrl": "https://api.test.###.com:44301;http://api.test.###.com:8001", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } }
- 主站(test.###.com)配置可以保留443端口(如果没被其他服务占用),加上主机头:
- 配置本地hosts解析
因为你用的是自定义域名,需要让本地电脑能把这些域名指向自己。右键以管理员身份打开C:\Windows\System32\drivers\etc\hosts文件,添加两行:127.0.0.1 test.###.com 127.0.0.1 api.test.###.com - 信任本地开发HTTPS证书
打开管理员命令提示符,运行以下命令信任.NET开发证书,避免浏览器证书错误:dotnet dev-certs https --trust
二、解决IIS Express的权限与域名配置问题
如果你更习惯用IIS Express,之前的“访问被拒绝”错误是因为普通用户没有权限注册自定义域名的URL。按下面步骤修复:
具体操作步骤:
- 更新API项目的
launchSettings.json
给IIS Express配置指定正确的自定义域名和专属端口:"profiles": { "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, "launchUrl": "swagger", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" }, "iisSettings": { "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { "applicationUrl": "https://api.test.###.com:44302;http://api.test.###.com:8002", "sslPort": 44302 } } } } - 给自定义域名分配URL权限
打开管理员命令提示符,运行以下命令给你的Windows用户分配该域名端口的访问权限(替换你的Windows用户名为实际用户名,比如DESKTOP-XXX\Glenn):netsh http add urlacl url=https://api.test.###.com:44302/ user=你的Windows用户名 netsh http add urlacl url=http://api.test.###.com:8002/ user=你的Windows用户名 - 重置IIS Express证书(可选)
如果还是有证书问题,打开certmgr.msc,找到“个人→证书”里和localhost/api.test.###.com相关的旧证书删除,然后重启Visual Studio,重新启动项目时会提示生成新证书,点击信任即可。
三、多项目启动的最佳配置建议
- 统一环境变量:确保两个项目的
ASPNETCORE_ENVIRONMENT都设为Development,这样它们会自动加载appsettings.Development.json,方便你统一管理测试环境的配置变量。 - 设置多启动项目组:在Visual Studio解决方案上右键→“属性”→“启动项目”,选择“多启动项目”,把两个项目的操作都设为“启动”,这样每次运行都会同时启动两个站点。
- 端口规划:开发时尽量避免用443、80这类系统默认端口,建议用44300+的端口段给不同项目分配,从根源上避免端口冲突。
按照上面的步骤调整后,你应该就能正常启动两个自定义域名的站点,同时避免之前的错误了。
备注:内容来源于stack exchange,提问作者Glenn Jansson
相关产品推荐
相关产品推荐

