Невозможно привести объект типа «System.Net.FileWebRequest» к типу «System.Net.HttpWebRequest». - PullRequest
4 голосов
/ 18 января 2011

Привет, ребята. Я получаю вышеуказанную ошибку при попытке с сервера (развернул тот же код на сервере). Но когда я пытаюсь использовать тот же код с моей локальной машины, он не выдает ошибку.

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);

Есть идеи, ребята, что может быть не так?

Ответы [ 2 ]

8 голосов
/ 18 января 2011

Передаваемый URI не является http URI - это либо просто путь, либо file URI.Убедитесь, что URI начинается с http:.Если это относительный URI, вам нужно сделать его абсолютным.

2 голосов
/ 18 января 2011

WebRequest - это тип, возвращаемый фабричным методом WebRequest.Create(), и абстрактный тип.

В соответствии с протоколом, распознанным в строке URL, он возвращает вам допустимый подкласс, например FileWebRequest или FtpWebRequest.

Проблема в вашем коде в том, что вы пытаетесь создать запрос для локального файла (file: //), поэтому фабрика возвращает FileWebRequest, но вы заставляете код думать, что это удаленный URL-адрес HTTP , Просто неправильно .

Это объясняет тот факт, что он работает только с удаленными, а не локальными файлами

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...