Если я понимаю вопрос, это намного проще, чем говорят люди - если вы хотите, чтобы WebClient выполнил все детали запроса (включая перенаправление), но затем получил фактический ответ В конце URI вы можете создать подкласс WebClient следующим образом:
class MyWebClient : WebClient
{
Uri _responseUri;
public Uri ResponseUri
{
get { return _responseUri; }
}
protected override WebResponse GetWebResponse(WebRequest request)
{
WebResponse response = base.GetWebResponse(request);
_responseUri = response.ResponseUri;
return response;
}
}
Просто используйте MyWebClient везде, где бы вы ни использовали WebClient. После того, как вы сделали любой вызов WebClient, который вам нужно было сделать, вы можете просто использовать ResponseUri для получения фактического перенаправленного URI. Вам также необходимо добавить аналогичное переопределение для GetWebResponse (запрос WebRequest, результат IAsyncResult), если вы использовали асинхронный материал.