2010-02-05 6 views
4

Мне нужно проверить, существует ли текстовый файл на сайте в другом домене. URL может быть:Проверьте, существует ли текстовый файл в ASP.NET

http://sub.somedomain.com/blah/atextfile.txt 

Мне нужно сделать это из кода позади. Я пытаюсь использовать объект HttpWebRequest, но не знаю, как это сделать.

EDIT: Я ищу легкий вес способ сделать это, как я буду выполнение этой логики каждые несколько секунд

ответ

2
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(
         "http://sub.somedomain.com/blah/atextfile.txt"); 

HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

if (response.StatusCode == HttpStatusCode.OK) 
{ 
    // FILE EXISTS! 
} 
response.Close(); 
+3

Возможно, вы также захотите установить свойство HttpWebRequest.Timeout на низкое значение, если вы делаете это каждые несколько секунд. Значение по умолчанию - 100 секунд, вы, вероятно, не хотите долго ждать, если файл недоступен или сервер не отвечает. –

+1

Похоже, что requestGetResponse() выдает исключение, если файл не существует? Удаленный сервер возвратил ошибку: (404) Не найден. "," StackTrace ":" at System.Net.HttpWebRequest.GetResponse – Nick

+0

Я предполагаю, что это может быть завернуто в блок использования, чтобы сделать его немного приятным (no Close() не требуется). – Beska

0

Нечто подобное может работать для вас:

using (WebClient webClient = new WebClient()) 
{ 
    try 
    { 
     using (Stream stream = webClient.OpenRead("http://does.not.exist.com/textfile.txt")) 
     { 
     } 
    } 
    catch (WebException) 
    { 
     throw; 
    } 
} 
Смежные вопросы