首页 > 解决方案 > .net core 3.1 和 .net 5 之间的 HttpClient 行为不同

问题描述

以下代码使用 Kerberos 身份验证从 WebHDFS 实例检索 JSON 文档:

HttpClientHandler clientHandler = new()
{
    Credentials = CredentialCache.DefaultNetworkCredentials,
    DefaultProxyCredentials = CredentialCache.DefaultNetworkCredentials
};

using HttpClient client = new(clientHandler);

const string Url = "https://x.com:50470/webhdfs/v1?op=GETHOMEDIRECTORY";
string responseBody = await client.GetStringAsync(Url);

此代码在 .net core 3.1 中运行良好,并使用当前用户的凭据进行身份验证。但在 .net 5 上,完全相同的代码会产生 403 错误,并带有java.util.NoSuchElementException由 WebHDFS 返回的消息。

我检查了几份文档(例如这个),试图了解可能导致问题的原因,但没有找到任何东西。

我也尝试过使用:

AppContext.SetSwitch("System.Net.Http.UseSocketsHttpHandler", false);

但这没有帮助。

标签: httpclient.net-5webhdfs

解决方案


推荐阅读