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

Asp.net Core 8项目拆分与多MVC项目协同运行及重定向问题咨询

一、Asp.net Core 8拆分项目(不使用WebApi、微服务、类库)的实现方案

如果不想用类库、WebApi或微服务拆分解决方案,可以通过多MVC项目+共享资源链接的方式实现功能拆分:

  • 按功能拆分独立MVC项目:将登录、聊天、用户管理等不同业务模块,分别创建为单独的Asp.net Core MVC WebApplication项目,全部加入同一解决方案。
  • 用文件链接共享代码:对于需要复用的模型、工具类等代码,不要复制到每个项目,而是右键目标项目→添加→现有项,选中要共享的文件后,点击添加按钮旁的下拉箭头,选择添加为链接。这样多个项目共用同一份文件,修改时所有引用的项目都会同步更新。
  • 统一配置管理:在解决方案根目录创建共享配置文件(如appsettings.shared.json),每个项目的Program.cs中加载该文件:
    builder.Configuration.AddJsonFile("../appsettings.shared.json", optional: true, reloadOnChange: true);
    
  • 共享静态资源:在解决方案根目录创建SharedStatic文件夹存放公共静态文件(如样式、脚本),每个项目通过中间件指定加载路径:
    app.UseStaticFiles(new StaticFileOptions
    {
        FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "../SharedStatic")),
        RequestPath = "/SharedStatic"
    });
    
二、同一解决方案下多MVC项目协同运行及重定向问题解决

1. 同时运行多个项目

默认情况下VS只会启动一个项目,要让多个项目同时运行:

  • 右键解决方案→属性→启动项目,选择多个启动项目,将需要同时运行的项目的操作设置为启动,保存设置即可。
  • 每个项目需设置不同端口:打开各自的launchSettings.json,修改applicationUrl为不同地址,比如登录项目用http://localhost:5000,聊天项目用http://localhost:5001。

2. 实现跨项目重定向

  • 使用完整URL重定向:从登录项目重定向到聊天项目时,必须使用完整的目标项目URL,不要用相对路径:
    // 登录成功后重定向到聊天项目的Chat页面
    return Redirect("http://localhost:5001/Chat");
    
  • 避免硬编码端口:可以在登录项目的appsettings.json中配置其他项目的地址:
    "ServiceUrls": {
        "ChatApp": "http://localhost:5001"
    }
    
    然后在代码中读取配置后拼接URL:
    var chatAppUrl = builder.Configuration["ServiceUrls:ChatApp"];
    return Redirect($"{chatAppUrl}/Chat");
    

3. 解决跨域访问问题

因为不同项目端口不同,属于跨域场景,需在聊天项目中配置CORS:

  • 注册CORS服务:
    builder.Services.AddCors(options =>
    {
        options.AddPolicy("AllowLoginOrigin", policy =>
        {
            policy.WithOrigins("http://localhost:5000") // 允许登录项目的地址
                  .AllowAnyHeader()
                  .AllowAnyMethod()
                  .AllowCredentials(); // 如果需要传递Cookie等凭证
        });
    });
    
  • 启用CORS中间件(注意顺序要放在UseRouting之后,UseAuthorization之前):
    app.UseCors("AllowLoginOrigin");
    
  • SignalR跨域配置:如果登录项目要连接聊天项目的SignalR Hub,需在映射Hub时指定CORS策略:
    app.MapHub<ChatHub>("/chatHub").RequireCors("AllowLoginOrigin");
    

内容的提问来源于stack exchange,提问作者Fatemeh Seyf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 17:03:24