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

.NET 6集成测试遇404 Not Found问题求助

集成测试404问题排查方向

问题描述

复用项目其他微服务的集成测试步骤(通过环境变量创建客户端、添加认证请求头)编写测试,但执行时遇到问题:确认认证头已正确设置后,请求控制器端点始终返回404 Not Found,随后触发资源释放流程。怀疑主机构建有问题,但如果是该原因,响应不应只有404。该步骤已在多个测试中正常运行,目前无法定位问题,求排查方向。

测试代码

public async Task Users(string url)
{
    //Act
    var http = factory.CreateClient();
    var request = new HttpRequestMessage(HttpMethod.Get, $"/api/v1/Account/{url}");
  
    await request.AddWamHeaders();
    var response = await http.SendAsync(request);
    Console.WriteLine(response.Content.ReadAsStreamAsync());
    //Assert
    response.EnsureSuccessStatusCode();
    JObject data = JsonConvert.DeserializeObject<JObject>(await response.Content.ReadAsStringAsync());
    Assert.True(data["Data"].Count() > 1);
    Assert.Equal("application/json; charset=utf-8",
    response.Content.Headers.ContentType.ToString());
}

排查方向

  • 验证路由匹配准确性

    • 核对控制器的[Route]特性,确认是否与请求路径/api/v1/Account/{url}完全匹配,比如控制器是否标注了[Route("api/v1/[controller]")],或是否存在全局路由前缀未在测试中处理
    • 检查Action的路由定义,比如是否有[HttpGet("{url}")]特性,且参数名称与Action方法的参数名一致
    • 尝试使用完整绝对路径发起请求,比如拼接http.BaseAddress:$"{http.BaseAddress}api/v1/Account/{url}",确认测试客户端的BaseAddress配置正确
  • 检查测试工厂配置

    • 确认WebApplicationFactory是否正确启动了目标服务,未遗漏关键配置(如服务注册、中间件执行顺序)
    • 对比测试环境与其他正常微服务的路由配置,确保路由中间件已启用,无自定义路由约束导致匹配失败
  • 排查认证逻辑的间接影响

    • 临时注释认证相关代码,直接请求端点,若能返回正常响应,说明问题出在认证逻辑而非路由;若仍404,则聚焦路由问题
    • 部分自定义认证逻辑可能在验证失败时返回404而非标准401/403,可查看认证中间件的日志或代码确认
  • 输出详细请求响应信息

    • 修正响应内容打印代码:将Console.WriteLine(response.Content.ReadAsStreamAsync());改为Console.WriteLine(await response.Content.ReadAsStringAsync());,查看404响应的具体内容(比如是否有路由匹配失败的提示)
    • 打印完整请求URL、请求头信息,确认请求目标地址和认证头的实际状态
    • 在测试工厂中配置Debug级日志,查看路由匹配过程的详细日志,确认请求是否被正确分发到对应控制器Action
  • 检查控制器与Action的可访问性

    • 确认控制器类和Action方法均为public修饰,未被[NonAction]标记
    • 检查是否存在[Authorize]等授权特性,虽然授权问题通常返回401/403,但自定义授权逻辑可能返回404,可临时移除授权特性测试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 02:15:26