使用System.WebClient捕获500内部服务器错误

时间:2011-06-01 18:17:00

标签: c#

我有一些代码DownloadStringAsync。与我的浏览器,我可以得到一些有关错误的信息,因为我打开发送错误消息到IIS中的浏览器。我想知道是否可以在代码中捕获它。

void Process( Job job )
{
   using( WebClient client = new WebClient() )
   {
        client.DownloadStringCompleted += (sender, args ) =>
            DownloadStringCompleted(job,args);

        try
        {
            client.DownloadStringAsync(new Uri(job.url), job);
        }
        catch (WebException e)
        {
            Console.WriteLine(e.Message);
        }
   }
}

void DownloadStringCompleted(Job job, DownloadStringCompletedEventArgs args)
{
   if( args.Error != null )
   {
       // How can i get the response ? Like 500 Internal Server Error
       // this_buggy_page.asp Line 100000
   }
}

1 个答案:

答案 0 :(得分:4)

如果args.Error != null它可能包含WebException的实例;如果是这种情况,那么您可以将其转换为WebException,然后访问其Response属性,您可以将其转换为HttpWebResponse(对于HTTP调用),然后从那里获取标题/正文/等。