基本上我想記錄測試時產生錯誤的uri,使用調試器我可以找到失敗的uri,但是我不知道如何找回它,下面是一個打印屏幕從DownloadStringCompletedEventArgs獲取錯誤Uri
http://img802.imageshack.us/img802/5465/progps.jpg
忠告理解。
基本上我想記錄測試時產生錯誤的uri,使用調試器我可以找到失敗的uri,但是我不知道如何找回它,下面是一個打印屏幕從DownloadStringCompletedEventArgs獲取錯誤Uri
http://img802.imageshack.us/img802/5465/progps.jpg
忠告理解。
而不是呼叫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;
...
}
您可以使用此技術將任何類型的狀態傳遞給事件處理函數。
(e.Error.Response as HttpWebResponse).ResponseUri
但如果有重定向不會ResponseUri從請求的URI有所不同呢? – 2010-08-16 20:49:18
Ash對Jim Mischel的回答所說的是,在事件處理函數中傳遞給DownloadStringAsync的UserToken可以在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;
...
}
對不起,回覆遲了,感謝您的建議,將UserState屬性強制轉換爲Uri並重載DownloadStringAsync完美工作(看不到UserToken) 乾杯 – Ash 2010-08-18 16:20:31