检查URL文档链接是否存在的最佳方法是什么?

时间:2019-05-24 02:40:08

标签: c# asp.net validationattribute

我需要在不打开链接文档/图像的情况下检查不同文件的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 个答案:

答案 0 :(得分:4)

您可能想发送HEAD request。引用w3.org:

  

响应HEAD请求的HTTP标头中包含的元信息应该与响应GET请求发送的信息相同。

     

此方法通常用于测试超文本链接的有效性,可访问性和最新修改,以及用于获取请求所隐含的实体的元信息,而无需转移实体-主体本身。

关于实现,也许请查看this post,这是AlexandreJBRodrigues的示例片段:

HttpClient httpClient = new HttpClient();

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

HttpResponseMessage response = 
   await httpClient.SendAsync(request);