Несуществующие изображения возвращают код состояния 200, а не 400

Я делаю следующий код, чтобы проверить, существует ли изображение:

 public bool DoesImageExist(string imageUrl)
{
    bool exists = false;
    try
    {
        HttpWebRequest request = (HttpWebRequest)System.Net.WebRequest.Create(imageUrl);
        request.Timeout = 5000;
        using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
        {
            exists = (response.StatusCode == HttpStatusCode.OK);
        }
    }
    catch
    {
        exists = false;
    }

    return exists;
}

Это работает нормально и возвращает 404 для изображений, которые не существуют, однако, поскольку я включил customErrors в web.config, он начал возвращать статус 200 в порядке, потому что запрашиваемое изображение возвращает 404 и перенаправляет на страницу обработчика ошибок, которая возвращает статус 200 ок. Есть ли способ обойти эту проблему, чтобы страница customErrors не возвращала 200 ok или не работала с изображениями?

1 ответ

Решение

Я нашел быстрый способ обойти это для тех, у кого была такая же проблема, поместив этот код на мою общую страницу обработчика (которую я установил в customErrors)

if (Request.Params.ToString().Contains("jpg") || Request.Params.ToString().Contains("png"))
        Response.StatusCode = 404;

Это в основном вынуждает его возвращать 404 для любых изображений в формате jpeg/png, однако для всех других ошибок это вынуждает отображать общую страницу.

Другие вопросы по тегам