【发布时间】:2013-10-09 16:35:33
【问题描述】:
我有一个用 C# 编写的独立处理程序 (.ASHX),它处理带有 XML 有效负载的传入推送通知,然后解析这些 XML 并提取和处理从中获取的任何必要信息。问题是我无法在本地对此进行测试,因为我们的开发环境防火墙防火墙太严密,而且我不允许传入通知出现异常。
我已经在我们的测试环境中对此进行了测试,并且通知正在被正确接收和处理,但是在随机代码审查之后,看起来我处理responseStreams 和streamReaders 的方式可能存在问题。
我的问题是,这是处理这些资源关闭的有效方法还是可能导致NullReferenceException?
处理这些资源的标准做法是什么,我应该使用using 语句来保持它们仅用于该范围还是这段代码就足够了?
Stream responseStream = null;
StreamReader reader = null;
string serverResponse = null;
try
{
responseStream = response.GetResponseStream();
reader = new StreamReader(responseStream);
serverResponse = reader.ReadToEnd();
}
finally
{
if (reader == null)
{
reader.Close();
}
if (responseStream == null)
{
responseStream.Close();
}
response.Close();
}
【问题讨论】:
标签: c# resources nullreferenceexception streamreader