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

ASP.NET MVC调用Core Web API遇JSON解析错误如何解决?

错误根因分析

该报错的直接原因是:你拿到的apiResponse根本不是JSON格式内容,而是HTML文档,HTML的首字符就是<,所以JSON解析器读到第一个字符就触发了异常。你猜测的返回非JSON内容是对的,但大概率不是XML,是HTML错误页、登录页或者重定向页。

排查与解决方案
  • 第一步:先校验HTTP响应状态与实际返回内容
    在反序列化前新增响应状态校验逻辑,同时打印/断点查看返回的原始内容,确认问题根源:
    using (var httpClient = new HttpClient(clientHandler))
    {
        using (var response = await httpClient.GetAsync(_apiBaseUrl))
        {
            // 新增响应状态校验
            if (!response.IsSuccessStatusCode)
            {
                var errorMsg = await response.Content.ReadAsStringAsync();
                // 此处可打日志或断点查看errorMsg和状态码,确认是404/401/500等哪类错误
                throw new HttpRequestException($"请求API失败,状态码:{(int)response.StatusCode},错误内容:{errorMsg}");
            }
            string apiResponse = await response.Content.ReadAsStringAsync();
            // 断点查看apiResponse的实际值,确认是否为预期JSON
            appList = JsonConvert.DeserializeObject<List<Application>>(apiResponse);
        }
    }
    
  • 第二步:核对API请求地址配置
    确认代码中_apiBaseUrl的取值和Postman调用的https://localhost:5001/api/Application完全一致,常见配置错误包括:缺少/api/Application后缀、协议用了http而非https、端口配置错误。如果API开启了HTTPS重定向,http请求会返回跳转响应,若HttpClient未开启自动跟随重定向,也会拿到HTML格式的跳转页。
  • 第三步:排查身份授权问题
    若你的ASP.NET Core Web API开启了身份验证(比如JWT、Cookie认证),Postman可能因为本地缓存了有效凭证可以正常访问,但你的ASP.NET MVC应用发请求时没有携带对应的认证凭证,会触发API返回401/403错误页,内容为HTML。
  • 第四步:修正JSON格式小问题
    你贴出的Postman返回JSON存在尾随逗号问题:每个对象最后一个属性dep_id的末尾多了多余的逗号,虽然多数JSON解析器兼容该写法,但建议调整API序列化配置移除尾随逗号,避免特殊场景解析异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:06:04