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

如何成功向ASP.NET Core控制器发送HTTP请求实现CRUD操作

解决方案

1. 复用现有控制器,调整路由匹配

你完全可以用现有的AandEBacklogController处理移动端请求,不需要新建控制器。当前核心问题是移动端请求路径和控制器动作的路由不匹配:

  • 移动端请求的是/AandEBacklog/MobileResponse(基于BaseAddress)
  • 现有Post方法仅标记[HttpPost],对应路径是/AandEBacklog

只需给Post方法添加路由后缀,让它匹配移动端的请求路径:

[HttpPost("MobileResponse")] // 新增路由后缀
public async Task<ActionResult<List<AandEBacklog>>> Addemrgncy(AandEBacklog booking)
{
    context.AandEBacklogs.Add(booking);
    await context.SaveChangesAsync();

    return Ok(await context.AandEBacklogs.ToListAsync());
}

2. 确保模型字段匹配

移动端序列化的是仅含note的匿名对象,服务器接收的是AandEBacklog对象,需要满足两个条件:

  • AandEBacklog类必须包含note属性
  • 若移动端只传note,服务器模型需允许其他属性为null(ASP.NET Core默认会忽略未提供的字段,无需额外配置)

如果AandEBacklog没有note属性,要么修改模型添加该字段,要么让移动端序列化完整的AandEBacklog对象。

3. HttpRequest的使用说明

如果需要直接操作请求内容(比如读取原始JSON、获取请求头),可以在控制器方法里直接通过HttpContext.Request访问,不需要提前声明变量:

[HttpPost("MobileResponse")]
public async Task<ActionResult<List<AandEBacklog>>> Addemrgncy(AandEBacklog booking)
{
    // 示例:获取请求头信息
    var userAgent = HttpContext.Request.Headers.UserAgent;
    // 示例:读取原始请求体JSON
    using var reader = new StreamReader(HttpContext.Request.Body);
    var rawJson = await reader.ReadToEndAsync();

    context.AandEBacklogs.Add(booking);
    await context.SaveChangesAsync();

    return Ok(await context.AandEBacklogs.ToListAsync());
}

不过常规CRUD场景下,直接用模型绑定(像你现在的AandEBacklog booking参数)更简洁,没必要直接操作HttpRequest。

4. 额外配置建议

  • 你的Program.cs路由配置没问题,app.MapControllers()已经正确映射控制器路由
  • 为避免大小写敏感导致的字段匹配问题,可在Program.cs添加全局JSON序列化配置:
builder.Services.AddControllers()
    .AddJsonOptions(options =>
    {
        options.JsonSerializerOptions.PropertyNameCaseInsensitive = true;
    });
  • 测试阶段可以用Postman先调用http://10.188.144.18:5240/AandEBacklog/MobileResponse,发送JSON{"note":"测试内容"},验证服务器是否正常接收并写入数据库

内容的提问来源于stack exchange,提问作者Luke.Aunger

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 05:39:54