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

如何解决Blazor中HttpGet请求GetBgQuizAnswerFirst失效问题?

问题分析与解决

核心问题

报错'<' is an invalid start of a value说明客户端尝试解析JSON时,接收到的却是HTML内容(通常是404错误页或服务器错误页,HTML以<开头)。而断点无法触发,证明请求根本没有命中GetBgQuizAnswerFirst这个Action,路由匹配失败是根本原因。

排查与修复步骤

  1. 检查控制器的路由前缀
    确认你的BgQuizAnswerController类上是否添加了正确的路由前缀,比如:

    [Route("api/[controller]")]
    public class BgQuizAnswerController : ControllerBase
    {
        // ...你的Action代码
    }
    

    如果控制器没有这个前缀,客户端请求的api/BgQuizAnswer/GetBgQuizAnswerFirst路径就无法匹配到Action,会返回404 HTML页面。

  2. 验证路由匹配情况
    用Postman或浏览器直接请求两个接口:

    • 正常接口:GET /api/BgQuizAnswer/GetBgQuizAnswer
    • 异常接口:GET /api/BgQuizAnswer/GetBgQuizAnswerFirst
      观察返回内容,如果异常请求返回HTML页面,说明路由确实没匹配上。
  3. 检查路由冲突或拼写问题

    • 确认项目中没有其他地方定义了相同的GetBgQuizAnswerFirst路由(比如其他控制器的Action)
    • 核对路由名称的大小写:部分服务器配置会区分路由大小写,确保客户端请求路径和Action路由的大小写完全一致
  4. 直接指定完整路由(备选方案)
    给异常的Action直接指定完整路由,避免前缀拼接问题:

    [HttpGet("api/BgQuizAnswer/GetBgQuizAnswerFirst")]
    public ActionResult<BgQuizAnswer> GetBgQuizAnswerFirst()
    {
        BgQuizAnswer retVal = null;
        _bgQuizAnswerService.Reset();
        if (_bgQuizAnswerService.MoveNext())
            retVal = _bgQuizAnswerService.Current;
        if (retVal != null)
        {
            return Ok(retVal);
        }
        else
        {
            return NotFound();
        }
    }
    
  5. 确认路由配置启用
    在Program.cs(或Startup.cs)中确保启用了属性路由:

    app.UseRouting();
    
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers(); // 启用属性路由
    });
    

补充说明

虽然两个Action逻辑完全一致,但路由匹配是独立的。只要路由没正确映射,请求就会落到错误处理页,返回HTML而非预期的JSON,进而触发客户端的解析错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 01:40:12