.NET 6中WebApplicationFactory的HttpClient调用SendAsync返回404
问题原因及解决方法
你的单元测试里Delete请求返回404的核心问题是请求URL没有指定正确的接口路径,只用到了客户端的基础地址(根路径),没拼接Activiteit接口的路由。
看你的代码对比:
- Post请求明确指定了接口路径
await client.PostAsJsonAsync("/Activiteit", testActiviteit); - 但Delete请求里
request.RequestUri = client.BaseAddress,相当于只请求了根地址(比如http://localhost:xxxx/),完全没指向删除接口的路由,自然找不到对应的处理逻辑。
修正代码
把Delete请求的RequestUri改成拼接正确的接口路径即可,比如和Post一致的/Activiteit(对应你的删除接口路由):
var request = new HttpRequestMessage(); request.Method = HttpMethod.Delete; // 拼接正确的接口路径 request.RequestUri = new Uri(client.BaseAddress, "/Activiteit"); request.Content = new StringContent(JsonSerializer.Serialize(actdel), Encoding.UTF8, "application/json"); response = await client.SendAsync(request); response.EnsureSuccessStatusCode();
如果你的删除接口是接收请求体的Delete路由(因为你需要传递完整对象),这个路径就和外部调用、Swagger测试时的路径一致,修正后就能触发对应的删除逻辑了。
内容的提问来源于stack exchange,提问作者Martijn
相关产品推荐
相关产品推荐

