不存在的图像返回状态代码200而不是400

时间:2013-01-15 13:32:46

标签: asp.net web-config http-status-code-404 http-status-codes custom-error-pages

我执行以下代码来检查图像是否存在:

 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,但是因为我在web.config中打开了customErrors,它开始返回200状态ok,因为它请求的图像返回404并重定向到错误处理程序页面返回200状态确定。有没有办法防止customErrors页面返回200 ok或为图像工作?

1 个答案:

答案 0 :(得分:0)

通过将此代码放入我的通用处理程序页面(我在customErrors中设置),我找到了解决此问题的任何人的快速方法

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

这基本上迫使它为任何jpeg / png图像返回404,但是对于所有其他错误,它会强制显示通用页面。