Каков наилучший способ проверить наличие ссылки на документ URL? - PullRequest
1 голос
/ 24 мая 2019

Мне нужно проверить действительность URL для разных файлов, не открывая документ ссылки / изображение. Я использовал приведенный ниже код в ASP.net 4.7.2 в атрибуте проверки. Текущий код выглядит следующим образом: (отлично работает с jpg)

public override bool IsValid(object DocumentURL)
        {
            try
            {
                string urlLink = (string)DocumentURL;
                WebRequest request = WebRequest.Create(urlLink);
                request.GetResponse();
                return true;
            }
            catch 
            {
                return false;
            }
        }

Это работает для изображений, но не удалось, когда я отправил ссылку на файл xls. Сообщение об ошибке:

"The request entity's media type 'text/plain' is not supported for this resource"
No mediaTypeFormatter is available to read an object of type 'W_Document_URL' media type 'text/plain'."

Похоже, моя функция пытается открыть документ. Мне нужно только проверить наличие документа URL, но не нужно открывать его. Также, если мне нужно ограничить документы изображениями (jpeg, png, bmp) и pdf, как лучше всего ограничить это внутри этой функции?

1 Ответ

4 голосов
/ 24 мая 2019

Возможно, вы захотите отправить HEAD запрос .Цитата w3.org:

Метаинформация, содержащаяся в заголовках HTTP в ответ на запрос HEAD, ДОЛЖНА быть идентична информации, отправленной в ответ на запрос GET.

Этот метод часто используется для тестирования гипертекстовых ссылок на достоверность, доступность и недавнее изменение, а также для получения метаинформации о сущности, подразумеваемой в запросе, без передачи самого тела сущности.

Что касается реализации, возможно, посмотрите этот пост , пример фрагмента от AlexandreJBRodrigues:

HttpClient httpClient = new HttpClient();

HttpRequestMessage request = 
   new HttpRequestMessage(HttpMethod.Head, 
      new Uri("http://iamauri.com"));

HttpResponseMessage response = 
   await httpClient.SendAsync(request);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...