Есть ли простой способ открыть Uri и получить все, на что он указывает? (С#)

У меня есть объект Uri, передаваемый конструктору моего класса.

Я хочу открыть файл, на который указывает Uri, будь то локальный, сетевой, http, любой, и прочитать содержимое в строке. Есть ли простой способ сделать это, или мне нужно попытаться отработать такие вещи, как Uri.IsFile, чтобы выяснить, как его открыть?

Ответ 1

static string GetContents(Uri uri) {
    using (var response = WebRequest.Create(uri).GetResponse())
    using (var stream = response.GetResponseStream())
    using (var reader = new StreamReader(stream))
        return reader.ReadToEnd();
}

Он не будет работать для любого. Он работает по умолчанию file://, http:// и https:// и ftp://. Тем не менее, вы можете зарегистрировать настраиваемые обработчики URI с WebRequest.RegisterPrefix, чтобы заставить его работать и для них.

Ответ 2

Самый простой способ - использовать класс WebClient:

using(WebClient client = new WebClient())
{
    string contents = client.DownloadString(uri);
}