如何在同一端口托管Visual Studio单解决方案中的多个项目
Visual Studio 同一解决方案双项目同端口部署实现方法
两个独立运行的项目进程无法直接绑定完全相同的端口(会触发系统层面的端口占用冲突),必须通过路径分流、请求转发的方式实现同端口访问,开发环境下无需额外部署第三方服务,直接用以下两种方案配置即可:
方案1:YARP反向代理(.NET Core/.NET 5+项目首选,调试体验最优)
- 选定一个项目作为主入口项目,通过NuGet安装官方反向代理包
Microsoft.AspNetCore.ReverseProxy - 主项目绑定你需要的目标端口,第二个项目绑定一个本地未占用的临时端口(比如5001)
- 在主项目的
appsettings.json中添加转发规则,把指定路径前缀的请求转发到第二个项目,示例配置:
"ReverseProxy": { "Routes": { "SecondProject": { "ClusterId": "secondCluster", "Match": { "Path": "/app2/{**catch-all}" } } }, "Clusters": { "secondCluster": { "Destinations": { "Local": { "Address": "https://localhost:5001/" } } } } }
- 主项目
Program.cs中注册服务和中间件:先加builder.Services.AddReverseProxy().LoadFromConfig(builder.Configuration.GetSection("ReverseProxy"));,再在请求管道配置段加app.MapReverseProxy(); - 第二个项目的
Program.cs中添加路径基址配置app.UsePathBase("/app2");,避免路由匹配、静态资源加载出错 - 右键解决方案→「属性」→「启动项目」,选择「多个启动项目」,把两个项目的操作都设为「启动」,保存后F5调试即可,所有外部请求都走主项目绑定的目标端口,通过
/app2前缀分流到第二个项目。
方案2:IIS Express虚拟目录配置(兼容全版本.NET Framework/.NET项目)
如果用IIS Express作为开发服务器,可以直接修改站点配置实现:
- 先把主项目的启动方式设为IIS Express,绑定你需要的目标端口
- 打开解决方案根目录下的隐藏文件夹
.vs,找到config/applicationhost.config配置文件 - 在文件内的
<sites>节点下定位到主项目对应的站点配置,在根路径应用<application path="/">的同级位置,添加第二个项目的虚拟应用节点:
<application path="/app2" applicationPool="Clr4IntegratedAppPool"> <virtualDirectory path="/" physicalPath="你本地第二个项目的根目录绝对路径" /> </application>
- 保存配置后重启VS,启动IIS Express调试,即可通过同端口下的
/app2路径访问第二个项目内容。
注意:不存在两个独立进程同时绑定同端口、同根路径的可能,这是操作系统端口分配规则决定的。如果要实现完全无路径前缀的同端口访问,只能把两个项目的逻辑合并到同一个托管进程中运行。
内容的提问来源于stack exchange,提问作者Shubham Dhumal
相关产品推荐
相关产品推荐

