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);
}
=================================================================================================================================================================堆栈跟踪:
位于system.net.httpWebRequest.EndgetResponse(IAsyncResult asyncResult)
位于system.net.http.httpClientHandler.getResponseCallback(IAsyncResultar)
===================================================================================================================消息:无法从传输连接读取数据:现有连接被远程主机强制关闭。堆栈跟踪:
在system.net.tlsstream.endwrite(IAsyncResult asyncResult)
在system.net.connectstream.writeHeaderScallback(IAsyncResult ar)
=======================================================================================================================================================================================================
====================================================================
如何获得更多细节?我试图避免像Wireshark这样的低级工具,我希望有trace/log/capture选项,更多关于应用程序调用失败的API的细节。
更新-以下是失败时的跟踪信息:
System.NET信息:0:[2292]SecureChannel#49584532::.ctor(Hostname=xx.xx.com,ClientCertificates=0,EncryptionPolicy=RequireEncryption)
System.NET信息:0:[2292]SecureChannel#49584532-留下0个客户端证书可供选择。
使用缓存的凭据句柄的System.NET信息:0:[2292]。System.NET信息:0:[2292]InitializeSecurityContext(凭据=system.net.safefreecredential_security,context=(null),targetName=xx.xx.com,inFlags=ReplayDetect、SequenceDetect、InitManualCredValidation,AllocateMemory,InitManualCredValidation)System.NET信息:0:[2292]InitializeSecurityContext(In-Buffer长度=0,Out-Buffer长度=178,
system.net.sockets详细:0:[2292]套接字#14347911::BeginSend()
System.net.Sockets详细:0:[2292]退出套接字#14347911::BeginSend()->OverlappedAsyncResult#19699911 System.net.Sockets详细:0:[2292]套接字#14347911::PostCompletition中的数据
[移除]
system.net.sockets详细:0:[2292]套接字#14347911::BeginReceive()
system.net.sockets详细:0:[2292]退出套接字#14347911::BeginReceive()->OverlappedAsyncResult#2389992
system.net.sockets详细:0:[2292]套接字#14347911::EndReceive(OverlappedAsyncResult#2389992)
system.net.sockets错误:0:[2292]套接字#14347911::EndReceive中的异常-现有连接被远程主机强制关闭。system.net.sockets详细:0:[2292]退出套接字#14347911::endreceive()->int32#0
system.net.sockets详细:0:[2292]套接字#14
日志条目:
System.net.Sockets错误:0:[2292]套接字#14347911::UpdateStatusAfterSocketError()-ConnectionReset
是由防火墙阻塞端口造成的。一旦添加了新的防火墙规则,问题就解决了。
正如我前面所说的,我能够在visual studio的调试模式下使其正确工作,但一旦创建了可执行文件,我就不能再读取网页了。如有任何帮助,我们将不胜感激。是什么导致了这个问题?
我使用weblogic应用服务器和oracle数据库。我使用jdbc与oracle数据库通信。我从weblogic数据源获得连接,并向表中插入一条记录。问题是,当我想关闭连接(插入数据库后)时,我会遇到一个异常(连接已经关闭)。这是我的代码: 但是联系。close语句引发异常: 我试图避免连接。close语句(因为我教过连接是自动关闭的!!但过了一段时间,所有的连接都打开了,因此引发了一个异常)
的JavaDoc没有说明关闭底层: https://docs.oracle.com/javase/8/docs/api/java/io/inputstreamreader.html#close-- 从类复制的描述:Reader 关闭流并释放与之关联的任何系统资源。一旦流关闭,进一步的read()、ready()、mark()、reset()或skip()调用将引发IOException。关闭以前关
JavaDoc for没有提到关闭底层的: https://docs.oracle.com/javase/8/docs/api/java/io/InputStreamReader.html#close-- 从课堂上复制的描述:Reader 关闭流并释放与之关联的所有系统资源。流关闭后,进一步的read()、ready()、mark()、reset()或skip()调用将抛出IOException。
这是我用来调用web API的代码。通过浏览器调用web api工作正常。
问题内容: 我想使用OkHttpClient加载URL,如果给定URL的网站以pdf内容类型响应,我将继续下载PDF,否则我想忽略响应。 我的问题是,我是否需要做一些特殊的事情来关闭请求/响应,或者如果我选择不读取响应字节流,是否需要做任何事情来表明我将不使用响应?如果没有,OkHttpClient何时关闭连接? 问题答案: 调用将释放响应所拥有的所有资源。连接池将使连接保持打开状态,但是如果未使