在我的ASP.NET MVC应用程序中,我正在从URL读取外部文件并将其保存到我服务器上的目录中。如果文件被修改,我每隔几秒钟就会循环一次,以获得实际数据。
我需要认识到通过URL访问的文件的LastWrittenTime
与已经下载到服务器的文件不同。我不能使用FileInfo
类,因为“不支持URI格式”。
那么如何从URL获取文件的最后写入时间而无需为每个循环下载完整文件?
答案 0 :(得分:4)
假设你的HTTP服务器允许这样做。
System.Net.WebRequest req = System.Net.HttpWebRequest.Create("http:\\your\url.ext");
req.Method = "HEAD";
using (System.Net.WebResponse resp = req.GetResponse())
{
DateTime LastModified;
if(DateTime.TryParse(resp.Headers.Get("Last-Modified"), out LastModified))
{
//Check if date is good and then go to full download method.
}
}
当此方法不起作用时,因为服务器不允许它。然后,唯一的方法是完全下载文件。
答案 1 :(得分:0)
我担心你不能。
当它是您要下载的网页时,您可能希望服务器正确设置LastModified
的{{1}}属性以获取上次修改页面的日期。但即使这不是你总能依赖的东西。
当它是文件时,除非您将文件保存在自己的磁盘上,否则无法告知日期。 (就像你现在正在做的那样。)即便如此,根据服务器设置,你可能会在光盘上获得文件的创建日期,而不是在你正在下载的服务器上。