【发布时间】:2012-06-08 22:08:09
【问题描述】:
我发现了一个异常,我通过两种方式完成了。使用第一种方法,我正在捕获完整的异常,检查内部异常是否为 WebException 类型,如果是,则获取响应流。下面是第一个示例,但是我总是得到一个零字符串响应:
catch (Exception e)
{
if (e.InnerException is WebException)
{
WebException webEx = (WebException)e.InnerException;
HttpWebResponse myResponse = webEx.Response as HttpWebResponse;
string response = string.Empty;
if (myResponse != null)
{
StreamReader strm = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
response = strm.ReadToEnd();
//EMPTY RESPONSE
}
}
}
但是,如果我捕捉到 Web 异常,并且几乎做同样的事情,我会得到很好的响应:
catch (WebException e)
{
HttpWebResponse myResponse = e.Response as HttpWebResponse;
string response = string.Empty;
if (myResponse != null)
{
StreamReader strm = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
response = strm.ReadToEnd();
//POPULATED RESPONSE
}
}
任何想法为什么我能够解析第二个示例中的响应但不能在第一个示例中解析?
【问题讨论】:
-
第一个示例中的“e”(外部异常)的类型是什么?不过,我认为 Hans Passant 在这个问题中的评论 stackoverflow.com/questions/6479771/… 可能是一个原因。
标签: c# web-services exception exception-handling