当服务器返回错误时,使用WebClient访问响应主体的任何方法?

当使用WebClient类时响应状态为4xx时,是否有办法访问响应主体,例如:

(webClient, evt) => // this is the event handler for the UploadStringCompleted event { if (evt.Error != null) { // can I access the response text? } }); 

由于evt.Error是一个WebException(而不是一个vanillaexception),这就是我所做的(请原谅VB.NET):

 '''  ''' Extends a WebException to include any body text from the HTTP Response in the .Message '''  Friend Function ExtendWebExceptionInfo(ex As Exception) As Exception Dim wEx As WebException = TryCast(ex, WebException) If wEx Is Nothing Then Return ex Dim exMessage As String = Nothing Using reader As New StreamReader(wEx.Response.GetResponseStream, System.Text.Encoding.UTF8) exMessage = reader.ReadToEnd End Using If Not String.IsNullOrWhiteSpace(exMessage) Then exMessage = String.Format("{0}{1}{1}The server says:{1}{2}", wEx.Message, vbCrLf, exMessage) Return New WebException(exMessage, wEx, wEx.Status, wEx.Response) End If Return wEx End Function