Blazor Server调用API Delete接口返回404问题求助
HttpDelete接口调用返回404问题排查
问题现象
API多数功能正常,但Blazor组件调用HttpDelete接口时始终返回404错误。文件名格式为picture.png,尝试使用完整URL、对文件名做URL编码均无法解决,但通过Swagger调用该接口却能成功删除文件。
相关代码片段
API控制器代码
[Route("/[controller]")] [ApiController] public class UploadController : ControllerBase // ... 其他业务代码 [HttpDelete("delete/{filename}")] public IActionResult Delete(string filename) { try { var filePath = Path.Combine(grundPath, ulPath, filename); if (System.IO.File.Exists(filePath)) { System.IO.File.Delete(filePath); return StatusCode(200); } } catch (Exception ex) { return StatusCode(500, ex.Message); } return StatusCode(500); }
Blazor组件调用代码
// ... 其他组件代码 @inject HttpClient Http // ... 其他组件代码 string url = $"delete/{filename}" HttpResponseMessage response = await Http.DeleteAsync(url); // ... 其他组件代码
排查步骤及结论
- 尝试使用完整URL发起请求,结果仍为404;
- 对文件名做URL编码后,Toastr显示的请求URL与Swagger一致,但Visual Studio输出的请求URL显示未编码,初步怀疑编码问题,但未解决;
- 检查Program.cs中的中间件顺序,未发现明显异常;
- 2022-11-10测试验证:注释掉
app.UseAuthentication和app.UseAuthorization后,Blazor组件可正常调用该API接口,确认问题根源为认证授权相关配置,后续将针对该点发布新问题。
内容的提问来源于stack exchange,提问作者Tobias Gustafsson
相关产品推荐
相关产品推荐

