C# 获取http状态返回ObjectDisposedException

C# 获取http状态返回ObjectDisposedException,c#,json,C#,Json,我正在尝试从http响应返回状态代码,如下所示: try { HttpWebRequest request = WebRequest.Create(requestURI) as HttpWebRequest; string text using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) using (var responseStream = new StreamRe

我正在尝试从http响应返回状态代码,如下所示:

try
{
    HttpWebRequest request = WebRequest.Create(requestURI) as HttpWebRequest;
    string text

    using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
    using (var responseStream = new StreamReader(response.GetResponseStream()))
    {
       text = responseStream.ReadToEnd();
    }

    var responseHeader = (HttpWebResponse)request.GetResponse();
    var status = responseHeader.StatusCode;
}
catch (WebException ex)
{
    MessageBox.Show(ex.ToString());
}
问题是我遇到了以下异常:

System.ObjectDisposedException:“无法访问删除的对象名称:'System.Net.HttpWebResponse'。”

在这一行:
var status=responseHeader.StatusCode

为什么会这样?我想得到状态码和描述

using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
将在离开using块后处理响应

因此,对
(HttpWebResponse)request.GetResponse()的另一个调用将引发异常。此外,因为它是一个web响应,所以您不能读取它两次

尝试以下替代方案:

HttpWebRequest request = WebRequest.Create(requestURI) as HttpWebRequest;
string text;

HttpStatusCode status;

using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
using (var responseStream = new StreamReader(response.GetResponseStream()))
{
   text = responseStream.ReadToEnd();
   status = response.StatusCode;
}
将在离开using块后处理响应

因此,对
(HttpWebResponse)request.GetResponse()的另一个调用将引发异常。此外,因为它是一个web响应,所以您不能读取它两次

尝试以下替代方案:

HttpWebRequest request = WebRequest.Create(requestURI) as HttpWebRequest;
string text;

HttpStatusCode status;

using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
using (var responseStream = new StreamReader(response.GetResponseStream()))
{
   text = responseStream.ReadToEnd();
   status = response.StatusCode;
}

实际上调用dispose过于频繁的少数例外情况之一:-)您缺少一个“;”在'string text'之后,实际上经常调用dispose的少数异常之一:-)缺少一个';'在'string text'之后,但是如果我想使用变量
status
也可以使用?我该怎么做?您可以将声明带到using语句之外,就像您对
text
所做的那样我会更新答案,但我不确定返回类型。嗯,好的,但是
HttpReturnStatus
用红色下划线,没有参考发现嗯,是的,正如我所说,我不知道
类型
;-),它是
HttpStatusCode
btw;我编辑了它。看起来像一个
字符串
:但是如果我想使用变量
status
也可以使用它吗?我该怎么做?您可以将声明带到using语句之外,就像您对
text
所做的那样我会更新答案,但我不确定返回类型。嗯,好的,但是
HttpReturnStatus
用红色下划线,没有参考发现嗯,是的,正如我所说,我不知道
类型
;-),它是
HttpStatusCode
btw;我编辑了它。看起来像一个
字符串