C# HttpWebResponse上处理的奇怪对象异常
我正在开发一个程序,每5秒钟自动查询一个网站。在过去的几天里,它一直工作得很好,但今天当我重新启动它时,它一直在下面标记的行上抛出C# HttpWebResponse上处理的奇怪对象异常,c#,.net,web,C#,.net,Web,我正在开发一个程序,每5秒钟自动查询一个网站。在过去的几天里,它一直工作得很好,但今天当我重新启动它时,它一直在下面标记的行上抛出System.ObjectDisposedException。我应该提到的是,在同一台机器上通过浏览器访问此URL可以正常工作 代码: HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.bitstamp.net/api/ticker/"); request.Method =
System.ObjectDisposedException
。我应该提到的是,在同一台机器上通过浏览器访问此URL可以正常工作
代码:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.bitstamp.net/api/ticker/");
request.Method = "GET";
try
{
// ObjectDisposedException thrown here
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
string resultString = reader.ReadToEnd();
return resultString;
}
}
}
catch (WebException ex)
{
// Handle it
}
System.ObjectDisposedException occurred
_HResult=-2146232798
_message=Cannot access a disposed object.
HResult=-2146232798
IsTransient=false
Message=Cannot access a disposed object.
Object name: 'SslStream'.
Source=System
ObjectName=SslStream
StackTrace:
at System.Net.Security.SslState.ValidateCreateContext(Boolean isServer, String targetHost, SslProtocols enabledSslProtocols, X509Certificate serverCertificate, X509CertificateCollection clientCertificates, Boolean remoteCertRequired, Boolean checkCertRevocationStatus, Boolean checkCertName)
InnerException:
堆栈跟踪:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.bitstamp.net/api/ticker/");
request.Method = "GET";
try
{
// ObjectDisposedException thrown here
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
string resultString = reader.ReadToEnd();
return resultString;
}
}
}
catch (WebException ex)
{
// Handle it
}
System.ObjectDisposedException occurred
_HResult=-2146232798
_message=Cannot access a disposed object.
HResult=-2146232798
IsTransient=false
Message=Cannot access a disposed object.
Object name: 'SslStream'.
Source=System
ObjectName=SslStream
StackTrace:
at System.Net.Security.SslState.ValidateCreateContext(Boolean isServer, String targetHost, SslProtocols enabledSslProtocols, X509Certificate serverCertificate, X509CertificateCollection clientCertificates, Boolean remoteCertRequired, Boolean checkCertRevocationStatus, Boolean checkCertName)
InnerException:
我做错什么了吗?在使用访问之前,我甚至没有访问响应流,如何处理它
编辑:添加了url和堆栈跟踪简化了一些事情,只需执行以下操作:
WebRequest.Create("https://www.bitstamp.net/api/ticker/").GetResponse();
我得到了WebException“服务器违反了协议。Section=ResponseHeader Detail=CR后面必须跟LF”,这表明服务器端出现了问题,解决这个问题的一个(可能是唯一的)方法是将以下内容添加到配置文件中:
<system.net>
<settings>
<httpWebRequest useUnsafeHeaderParsing="true" />
</settings>
</system.net>
不管怎样,这对我很有用。堆栈跟踪是什么?网站是谁的?为堆栈跟踪和网站编辑如果你使用浏览器(从同一台机器)访问URL会发生什么情况?@stovroz URL在同一台机器上的浏览器中工作正常事实上,在另一台计算机上,我得到的是“服务器违反了协议”错误,而不是objectdisposed。很奇怪。