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

UWP调用API失败:Build 10586完全无法运行,求解决方案

解决UWP Build 10586调用API时“连接被重置”的问题

针对你遇到的Build 10586版本完全无法调用目标API、19041版本偶尔异常的问题,结合你的代码和环境,给出以下排查和解决步骤:

1. 显式指定TLS版本

Windows 10 Build 10586(1511)默认可能未启用TLS 1.2,而现代API通常要求使用TLS 1.2及以上版本。在创建HttpBaseProtocolFilter后添加TLS版本指定:

var requestFilter = new HttpBaseProtocolFilter();
requestFilter.SupportedSslProtocols = SslProtocols.Tls12; // 显式启用TLS 1.2
requestFilter.IgnorableServerCertificateErrors.Add(ChainValidationResult.Untrusted);

2. 优化请求头添加逻辑

直接调用headers.Add("Authorization")可能导致重复添加请求头(多次点击按钮时),引发服务器端的请求错误。建议改为安全的添加方式:

var headers = requestClient.DefaultRequestHeaders;
if (!headers.ContainsKey("Authorization"))
{
    headers.Add("Authorization", "Bearer " + token);
}
// 或者使用TryAddWithoutValidation避免格式校验问题
// headers.TryAddWithoutValidation("Authorization", "Bearer " + token);

3. 扩展证书错误忽略范围

除了Untrusted,服务器证书的吊销验证失败、名称不匹配等问题也可能导致连接重置。调试时可临时添加更多忽略项(正式环境需确保证书合法):

requestFilter.IgnorableServerCertificateErrors.Add(ChainValidationResult.Untrusted);
requestFilter.IgnorableServerCertificateErrors.Add(ChainValidationResult.RevocationFailure);
requestFilter.IgnorableServerCertificateErrors.Add(ChainValidationResult.InvalidName);

4. 尝试切换到System.Net.Http.HttpClient

Windows.Web.Http.HttpClient在旧版本UWP中可能存在兼容性问题,尝试替换为System.Net.Http.HttpClient(Build 10586支持该类):

// 替换原Windows.Web.Http相关代码
using (var httpClient = new System.Net.Http.HttpClient())
{
    httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token);
    httpClient.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
    
    var maxRetryCount = 3;
    for (int retry = 0; retry < maxRetryCount; retry++)
    {
        var userListresponse = await httpClient.GetAsync(urlAuth);
        if (userListresponse.IsSuccessStatusCode)
        {
            string jsonResponse = await userListresponse.Content.ReadAsStringAsync();
            var valueResponse = JsonConvert.DeserializeObject(jsonResponse);
            break; // 成功后跳出重试循环
        }
        await Task.Delay(TimeSpan.FromSeconds(1));
    }
}

5. 排查服务器证书兼容性

Build 10586的根证书库较旧,若目标API使用的是较新的根证书签发的服务器证书,系统可能无法验证。可在10586设备上手动安装对应的根证书,或联系API服务方确认证书兼容性。

6. 捕获详细异常信息

你的catch块未处理异常,建议添加日志输出,获取更具体的错误详情:

catch (Exception ex)
{
    System.Diagnostics.Debug.WriteLine($"错误详情:{ex.Message}\n堆栈:{ex.StackTrace}");
    // 若为WebErrorException,可获取错误码
    if (ex is WebErrorException webEx)
    {
        System.Diagnostics.Debug.WriteLine($"Web错误码:{webEx.WebErrorStatus}");
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 15:28:31