wal*_*ruz 2 httpclient docker .net-core
我正在使用 .NET Core 3.1 这是我正在使用的代码:
CredentialCache credentialCache = new CredentialCache();
credentialCache.Add(new Uri(URL), "NEGOTIATE", new NetworkCredential(USER, PASSWORD, DOMAIN));
using (HttpClientHandler handler = new HttpClientHandler())
{
handler.Credentials = credentialCache;
using (HttpClient httpClient = new HttpClient(handler))
{
HttpRequestMessage request = new HttpRequestMessage(new HttpMethod("GET"), REQUEST_URL);
HttpResponseMessage response = httpClient.SendAsync(request).Result;
Console.Write(response.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
它在我的 Windows 机器上工作正常,但在 Linux docker 容器上启动时崩溃:
System.AggregateException:发生一个或多个错误。(GSSAPI 操作失败,出现错误 - 未指定的 GSS 失败。次要代码可能会提供更多信息(找不到领域“DOMAIN_NAME”的 KDC)。) ---> System.ComponentModel.Win32Exception (0x80090020):GSSAPI 操作失败,出现错误 - 未指定的 GSS失败。次要代码可能会提供更多信息(无法找到领域“DOMAIN_NAME”的 KDC)。在System.Net.Security.NegotiateStreamPal.AcquireCredentialsHandle(字符串包,布尔isServer,NetworkCredential凭据)在System.Net.NTAuthentication.Initialize(布尔isServer,字符串包,NetworkCredential凭据,字符串spn,ContextFlagsPal requestContextFlags,ChannelBindingchannelBinding)在System。 Net.Http.AuthenticationHelper.SendWithNtAuthAsync(HttpRequestMessage请求,Uri authUri,ICredentials凭证,布尔isProxyAuth,HttpConnection连接,HttpConnectionPool连接池,CancellationToken取消令牌)在System.Net.Http.HttpConnectionPool.SendWithNtConnectionAuthAsync(HttpConnection连接,HttpRequestMessage请求,布尔doRequestAuth,CancellationToken cancelToken)在 System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage 请求,布尔 doRequestAuth,CancellationToken CancellationToken) 在 System.Net.Http.AuthenticationHelper.SendWithAuthAsync(HttpRequestMessage 请求,Uri authUri,ICredentials 凭据,布尔 preAuthenticate,布尔 isProxyAuth,布尔 doRequestAuth 、 HttpConnectionPool 池、CancellationToken CancellationToken) 在 System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage 请求、CancellationToken CancellationToken) 在 System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage 请求、CancellationToken CancellationToken) 在 OurHomeServer.Log.LoggingHandler.SendAsync( /src/OurHomeServer/Log/LoggingHandler.cs 中的 HttpRequestMessage 请求、CancellationToken CancellationToken):System.Net.Http.HttpClient.FinishSendAsyncBuffered 第 35 行(Task`1 sendTask、HttpRequestMessage 请求、CancellationTokenSource cts、Boolean disposeCts)
当我在容器的 shell 中使用curl 请求时它可以工作。
我在我的 Dockerfile 中添加了以下行
RUN apt install -y mc sudo syslog-ng realmd gss-ntlmssp
Run Code Online (Sandbox Code Playgroud)
现在可以了!
| 归档时间: |
|
| 查看次数: |
3539 次 |
| 最近记录: |