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

ASP.NET Core多站点启动配置与环境变量设置问题求助

ASP.NET Core多站点启动配置与环境变量设置问题求助

看起来你遇到的是多项目同时启动时的端口冲突和IIS Express权限配置典型问题,我来一步步帮你梳理解决思路:

一、解决Self-Host(Development配置)的端口冲突问题

你碰到的System.IO.IOException: 地址已被占用错误,核心原因是两个项目都绑定了默认HTTPS端口443,导致端口争抢。解决这个问题的关键是给两个项目分配唯一的端口+主机头,同时确保本地能解析自定义域名。

具体操作步骤:

  1. 修改各自项目的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"
          }
        }
      }
      
  2. 配置本地hosts解析
    因为你用的是自定义域名,需要让本地电脑能把这些域名指向自己。右键以管理员身份打开C:\Windows\System32\drivers\etc\hosts文件,添加两行:
    127.0.0.1 test.###.com
    127.0.0.1 api.test.###.com
    
  3. 信任本地开发HTTPS证书
    打开管理员命令提示符,运行以下命令信任.NET开发证书,避免浏览器证书错误:
    dotnet dev-certs https --trust
    

二、解决IIS Express的权限与域名配置问题

如果你更习惯用IIS Express,之前的“访问被拒绝”错误是因为普通用户没有权限注册自定义域名的URL。按下面步骤修复:

具体操作步骤:

  1. 更新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
          }
        }
      }
    }
    
  2. 给自定义域名分配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用户名
    
  3. 重置IIS Express证书(可选)
    如果还是有证书问题,打开certmgr.msc,找到“个人→证书”里和localhost/api.test.###.com相关的旧证书删除,然后重启Visual Studio,重新启动项目时会提示生成新证书,点击信任即可。

三、多项目启动的最佳配置建议

  1. 统一环境变量:确保两个项目的ASPNETCORE_ENVIRONMENT都设为Development,这样它们会自动加载appsettings.Development.json,方便你统一管理测试环境的配置变量。
  2. 设置多启动项目组:在Visual Studio解决方案上右键→“属性”→“启动项目”,选择“多启动项目”,把两个项目的操作都设为“启动”,这样每次运行都会同时启动两个站点。
  3. 端口规划:开发时尽量避免用443、80这类系统默认端口,建议用44300+的端口段给不同项目分配,从根源上避免端口冲突。

按照上面的步骤调整后,你应该就能正常启动两个自定义域名的站点,同时避免之前的错误了。

备注:内容来源于stack exchange,提问作者Glenn Jansson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 11:54:28