WebRequest检查远程服务器上的文件是否存在由于404重定向而始终返回True

本文关键字:重定向 True 返回 存在 检查 服务器 是否 文件 WebRequest | 更新日期: 2023-09-27 18:24:38

我有一个文件共享远程服务器来存放我的所有文件。在显示它们之前,我想检查它们是否存在。

这很好,但当文件不存在时会中断,因为在网站上我有一个自动404重定向,因此如果文件不存在,它总是以状态代码200或TRUE返回,因为它脑海中的网页确实存在,因为它重定向并存在。

我该怎么绕过这个?

public bool verifyFile(string filePath)
    {
        bool result = true;
        string Domain = "http://www.SiteName.com/";
        try
        {
            WebRequest webRequest = WebRequest.Create(Domain + filePath);
            webRequest.Timeout = 1200;
            webRequest.Method = "HEAD";
            webRequest.GetResponse();
        }
        catch
        {
            result = false;
        }
        return result;
    }

WebRequest检查远程服务器上的文件是否存在由于404重定向而始终返回True

@Matthew提供了正确答案。我需要检查返回的MimeType。如果它返回为网页(text/html;charset=utf-8),那么我将返回设置为false。如果文件确实存在,则mimetype将是图像或文档。请参阅下面的更新代码。

public bool verifyFile(string filePath)
    {
        bool result = true;
        string Domain = "http://www.SiteName.com/";
        try
        {
            WebRequest webRequest = WebRequest.Create(Domain + filePath);
            webRequest.Timeout = 1200;
            webRequest.Method = "HEAD";
            WebResponse webResponse = webRequest.GetResponse();
            result = webResponse.ContentType.ToString() == "text/html; charset=utf-8" ? false : true;
        }
        catch
        {
            result = false;
        }
        return result;
    }