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

Visual Studio MVC C#项目登录失败:Angular控制器连接拒绝求助

解决Angular前端调用MVC后端Token接口连接被拒绝的问题

看起来你遇到的核心问题是前端Angular请求的后端Token接口(http://localhost:1336/token)无法建立连接,导致登录逻辑直接进入错误分支。结合你提供的代码和报错信息,我给你一步步梳理排查和解决方法:

1. 先确认后端服务是否在正确端口运行

报错net::ERR_CONNECTION_REFUSED的本质是:前端请求的localhost:1336这个地址根本没有服务在监听。你需要先核实你的MVC后端实际运行的端口:

  • 打开你的MVC项目,找到Properties文件夹下的launchSettings.json文件,查看applicationUrl配置项,比如:
    "applicationUrl": "http://localhost:5000;https://localhost:5001"
    
    这里的5000/5001就是后端实际运行的端口,而不是你前端代码里写的1336。
  • 或者在Visual Studio的Debug面板里,看项目启动后的地址栏,确认后端的访问端口。

2. 修正Angular前端的请求地址

你的authService.login方法应该是硬编码了http://localhost:1336/token这个地址,和后端实际端口不匹配。你需要修改这个地址:

  • 找到你的authService代码,把请求URL改成后端实际的端口,比如后端跑在5000端口,就改成:
    // authService里的login方法示例
    this.login = function(username, password) {
      // 替换成后端实际的地址
      return $http.post('http://localhost:5000/token', {
        username: username,
        password: password
      });
    }
    
  • 更优雅的方式是使用相对路径(如果前端和后端部署在同域下),直接写'/token',这样就不用硬编码端口:
    return $http.post('/token', { username: username, password: password });
    

3. 验证后端Token接口是否正常可用

即使端口对了,也要确认后端的/token接口确实存在且能正常响应:

  • 用Postman或者浏览器直接访问http://localhost:后端端口/token,发送POST请求,带上正确的账号密码参数,看是否能返回正常的Token。
  • 如果接口不存在,检查MVC项目里是否有对应的Api控制器,比如是否有TokenController,或者AccountController里是否有路由为[Route("token")]的登录方法。

4. 排查跨域问题(如果前后端端口不同)

如果前端和后端运行在不同端口,浏览器会触发跨域限制,也可能导致连接异常。你需要在MVC后端配置CORS:

  • 安装CORS包:在NuGet包管理器里安装Microsoft.AspNetCore.Cors。
  • 在Startup.cs里配置CORS中间件:
    public void ConfigureServices(IServiceCollection services)
    {
        // 添加CORS服务
        services.AddCors(options =>
        {
            options.AddPolicy("AllowLocalAngular",
                builder => builder.WithOrigins("http://localhost:前端端口")
                                  .AllowAnyHeader()
                                  .AllowAnyMethod());
        });
    
        // 其他服务配置...
    }
    
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        // 其他中间件...
    
        // 启用CORS,放在路由中间件之前
        app.UseCors("AllowLocalAngular");
    
        app.UseRouting();
        // 其他中间件...
    }
    

按照这几步排查,应该能解决你的登录失败问题。先从端口匹配开始查,这是最常见的原因。

内容的提问来源于stack exchange,提问作者Luca Salmaso

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:32:32