Получение ошибки Uri из DownloadStringCompletedEventArgs - PullRequest
1 голос
/ 17 августа 2010

Ну, в общем, я хочу записать URI, который выдает ошибку при тестировании, используя отладчик, я могу найти URI, который не удалось, однако я не знаю, как его получить, вот экран печати ниже

http://img802.imageshack.us/img802/5465/progps.jpg

Советы приветствуются.

Ответы [ 3 ]

1 голос
/ 17 августа 2010

Вместо вызова WebClient.DownloadStringAsync(Uri) вызовите перегрузку DownloadString(Uri, Object), передав Uri в качестве второго параметра. Затем в обработчике событий вы можете привести значение от e.UserToken к Uri, чтобы получить его. То есть:

Uri uri = new Uri("http://example.com");
WebClient client = new WebClient();
client.DownloadStringCompleted = StringDownloaded;
client.DownloadStringAsync(uri, uri);


void StringDownloaded(object sender, DownloadStringCompletedEventArgs e)
{
    Uri uri = (Uri)e.UserToken;

    ...
}

Вы можете использовать эту технику для передачи любого состояния в обработчик событий.

1 голос
/ 23 апреля 2013

Комментарий Аша к ответу Джима Мишеля говорит о том, что UserToken, переданный DownloadStringAsync в функции обработчика событий, доступен в e.UserState (e.UserToken не существует в объекте DownloadStringCompletedEventArgs e).

т.е. это работает:

Uri uri = new Uri("http://example.com");
WebClient client = new WebClient();
client.DownloadStringCompleted = StringDownloaded;
client.DownloadStringAsync(uri, uri);


void StringDownloaded(object sender, DownloadStringCompletedEventArgs e){
    Uri uri = (Uri)e.UserState;
    ...
}
1 голос
/ 17 августа 2010
(e.Error.Response as HttpWebResponse).ResponseUri
...