.NET Maui离线DataSync添加ApiKey请求报404问题求助
问题分析与解决方案
首先明确:你的代码已经成功将XApiKey添加到请求头中,从请求日志的Headers部分可以看到XApiKey: abc123已存在。你提到的预期URL是将ApiKey作为查询参数,这和当前添加请求头的逻辑是两种不同的认证方式,需要先确认后端的要求,再针对性处理。
情况1:后端要求ApiKey通过请求头传递(当前代码逻辑符合要求)
404错误的原因大概率不是请求头问题,而是资源路径或配置问题,建议排查以下几点:
- 确认后端DataSync服务的表名是否为
location,客户端代码中的表名是否与后端完全一致(大小写敏感)。 - 检查后端服务的路由配置,确认
/tables/location是有效的端点。 - 验证离线同步的配置是否正确,比如
DatasyncClient的基础URL是否指向正确的后端服务地址。 - 检查后端的CORS策略,是否允许你的Maui应用的请求来源。
情况2:后端要求ApiKey通过查询参数传递
如果后端确实需要将ApiKey放在URL的查询参数中,修改你的MyHandler代码如下(使用.NET 6+推荐的QueryHelpers):
using Microsoft.AspNetCore.WebUtilities; public class MyHandler : DelegatingHandler { protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { // 解析现有查询参数并添加XApiKey var queryParams = QueryHelpers.ParseQuery(request.RequestUri.Query); queryParams["XApiKey"] = "abc123"; // 构造新的请求URI var newUri = QueryHelpers.AddQueryString(request.RequestUri.AbsolutePath, queryParams); request.RequestUri = new Uri(newUri); // 发送请求并返回响应 var response = await base.SendAsync(request, cancellationToken); return response; } }
若项目未引用Microsoft.AspNetCore.WebUtilities,需在NuGet包管理器中安装该包。
内容的提问来源于stack exchange,提问作者ATEXInspect
相关产品推荐
相关产品推荐

