基础连接已关闭--API端点调用失败

本文关键字:--API 端点 调用 失败 连接 | 更新日期: 2023-09-27 17:58:59

我正在尝试确定当我使用HTTPS而不是来自Windows Server 2012 R2的HTTP时,对Restful API端点的调用失败的原因。当我在笔记本电脑(Windows7)上本地运行应用程序时,同样的HTTPS调用也能工作。

遗憾的是,我无法让Fiddler显示Web服务器上的应用程序对API的调用AppContainer环回豁免实用程序在尝试枚举AppContainers列表时出错服务器也被组策略锁定,所以我无法关闭防火墙来解决Fiddler问题。

对API的调用是:

public Task<HttpResponseMessage> SendAsync(HttpRequestMessage request)
{
  client = new HttpClient();
  // removed code for setting ignoreCertErrors and environmentName
  if (ignoreCertErrors && environmentName.ToUpper() != "PROD")
            {
                ServicePointManager.ServerCertificateValidationCallback =    delegate { return true; };
            }
  return client.SendAsync(request);
}

收到错误:

=============================================消息:基础连接已关闭:出现意外错误在发送时发生。堆栈跟踪:
在系统中。网HttpWebRequest。EndGetResponse(IAsyncResult asyncResult)
在系统中。网Http。HttpClientHandler。GetResponseCallback(IAsyncResultar)

=============================================消息:无法从传输连接读取数据:远程主机已强制关闭现有连接。堆栈跟踪:
在系统中。网TlsStream。EndWrite(IAsyncResult asyncResult)
在系统中。网ConnectStream。WriteHeadersCallback(IAsyncResult ar)

=============================================消息:远程主机强制关闭了现有连接堆栈跟踪:
在系统中。网插座。插座EndReceive(IAsyncResult asyncResult)
在系统中。网插座。NetworkStream。EndRead(IAsyncResult asyncResult)

=============================================

如何获取更多详细信息?我正在努力避免使用Wireshark这样的低级别工具,我希望有trace/log/capture选项来了解对API的应用程序调用失败的更多细节。

UPDATE-以下是失败时的跟踪信息:

系统。网络信息:0:[2292]SecureChannel#49584532::.ctor(主机名=XX.XX.com,客户端证书=0,加密策略=RequireEncryption)

系统。网络信息:0:[2292]SecureChannel#49584532-留下0客户端证书可供选择。

系统。网络信息:0:[2292]使用缓存的凭据句柄。系统网络信息:0:[2292]InitializeSecurityContext(凭据=System.Net.SafeFreeCredential_SECURITY,上下文=(null),targetName=XX。XX、 com,inFlags=ReplayDetect,SequenceDetect,Confidentity,AllocateMemory,InitManualCredValidation)系统。网络信息:0:[2292]InitializeSecurityContext(缓冲区内长度=0,缓冲区外长度=178,返回代码=ContinueNeeded)。

系统。网套接字详细:0:[2292]套接字#114347911::BeginSend()

系统。网套接字详细:0:[2292]正在退出套接字#114347911::BeginSend()->OverlappedAsyncResult#19699911系统。网详细套接字:0:[2292]来自套接字#114347911:的数据:完成后

[已删除]

系统。网详细套接字:0:[2292]套接字#114347911::EndSend(OverlappedAsyncResult#19699911)

系统。网详细套接字:0:[2292]正在退出套接字#114347911::EndSend()->Int32#178

系统。网套接字详细:0:[2292]套接字#114347911::BeginReceive()

系统。网套接字详细:0:[2292]正在退出套接字#114347911::BeginReceive()->OverlappedAsyncResult#2389992

系统。网详细套接字:0:[2292]套接字#114347911::EndReceive(OverlappedAsyncResult#2389992)

系统。网套接字错误:0:[2292]套接字#114347911::UpdateStatusAfterSocketError()-ConnectionReset

系统。网套接字错误:0:中的[2292]异常套接字#114347911::EndReceive-强制执行了现有连接由远程主机关闭。系统网详细套接字:0:[2292]正在退出套接字#114347911::EndReceive()->Int32#0

系统。网详细套接字:0:[2292]套接字#14

基础连接已关闭--API端点调用失败

日志条目:

系统。网套接字错误:0:[2292]套接字#114347911::UpdateStatusAfterSocketError()-ConnectionReset

是由阻止端口的防火墙引起的。添加新的防火墙规则后,问题就解决了。