我需要在不打开链接文档/图像的情况下检查不同文件的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,则在此函数中限制该图像的最佳方法是什么?
答案 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);