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

无法通过Postman调用C# ASP.NET Core 7控制器的问题排查

问题排查与解决步骤

1. 核心问题:缺失API路由映射

你的Program.cs中仅配置了MVC的默认路由(MapControllerRoute),但API控制器的属性路由需要通过MapControllers()来启用,否则ASP.NET Core无法识别你的控制器路由配置。

修改Program.cs,在MapControllerRoute之后添加API路由映射:

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllersWithViews();

// 新增:添加CORS策略配置
builder.Services.AddCors(options =>
{
    options.AddPolicy("AllowAll", policy =>
    {
        policy.AllowAnyOrigin()
              .AllowAnyMethod()
              .AllowAnyHeader();
    });
});

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();

// 修改:启用配置好的CORS策略
app.UseCors("AllowAll");

app.MapControllerRoute(
    name: "default",
    pattern: "{controller}/{action=Index}/{id?}");

// 新增:启用API属性路由映射
app.MapControllers();

app.MapFallbackToFile("index.html");

app.Run();

2. CORS配置不完整

原代码中app.UseCors();未指定任何允许策略,虽然Postman对跨域限制较宽松,但为了确保兼容性(包括后续Angular前端调用),必须配置明确的CORS策略,上述代码已补充该配置。

3. 验证请求参数

确保Postman请求符合以下要求:

  • 请求方法为GET(你的方法标注了[HttpGet])
  • 请求地址格式正确:https://localhost:<你的项目端口>/Contact/TestSaveContact

    注意:项目启用HTTPS后必须用HTTPS协议发起请求,否则会被UseHttpsRedirection重定向,可能导致请求异常。

4. 可选:简化控制器路由配置

可以合并[HttpGet]和[Route]注解,让代码更简洁:

[ApiController]
[Route("[controller]")]
public class ContactController : ControllerBase
{
    [HttpGet("TestSaveContact")]
    public async Task<ActionResult> TestSaveContact()
    {
        try
        {
            return Ok();
        }
        catch (Exception ex)
        {
            return StatusCode(500, new { msg = ex.Message });
        }
    }
}

完成以上修改后重启项目,再用Postman调用即可正常访问该接口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 09:00:20