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

.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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 19:53:21