C# 在不从服务器下载的情况下获取XML文件的版本

C# 在不从服务器下载的情况下获取XML文件的版本,c#,xml,C#,Xml,如果服务器上有XML文件。 有没有一种方法可以在不下载并读取文件的情况下获取其版本或上次修改日期 基本上我要做的是检查文件是否比我电脑上的版本更新下载它,如果不是,不要下载它 我现在下载并检查它的版本。但是,如果是同一版本或具有相同的上次修改日期,我不想浪费时间下载。Ruby On Rails中使用了一种技术来实现您所要求的优化。您可以编辑文件名,并在其末尾添加上次编辑的时间戳xmlname\u[timestamp].xml。当客户端需要文件时,如果文件名相同,则不下载该文件。如果应用程序位于浏

如果服务器上有XML文件。 有没有一种方法可以在不下载并读取文件的情况下获取其版本或上次修改日期

基本上我要做的是检查文件是否比我电脑上的版本更新下载它,如果不是,不要下载它


我现在下载并检查它的版本。但是,如果是同一版本或具有相同的上次修改日期,我不想浪费时间下载。

Ruby On Rails中使用了一种技术来实现您所要求的优化。
您可以编辑文件名,并在其末尾添加上次编辑的时间戳xmlname\u[timestamp].xml。当客户端需要文件时,如果文件名相同,则不下载该文件。如果应用程序位于浏览器中,当客户端需要该文件时,它将不会通过浏览器下载浏览器缓存中的新版本
希望它能有所帮助

您可以制作一个C#(或任何相关语言)通用处理程序(或脚本或页面),该处理程序采用1个参数文件名(XML文件)并将上次修改的日期写入输出。然后,如果你喜欢这个日期,你就开始下载

下面是一个通用处理程序的示例(请注意,它可能仍然需要一些错误捕获):

如果服务器上有XML文件。有没有一种方法可以在不下载并读取文件的情况下获取其版本或上次修改日期

不是这样的

基本上我要做的是检查文件是否比我电脑上的版本更新下载它,如果不是,不要下载它

听起来您需要标准的HTTP缓存控制。客户端可以发送If-Modified-Since请求或check-etag

有关详细信息,请参阅。

您是否考虑过使用for缓存机制?它是HTTP/1.1规范的一部分,您可能正在寻找一个强大的ETag(假设您可以处理HTTP头)


您还可以使用请求头基于上次已知的修改日期进行条件查询。

至少有两种方法可以做到这一点

首先是对文件执行HEAD请求,而不是GET。HEAD请求将返回文件名、上次修改日期、内容长度和其他一些内容。但是它没有下载文件。您可以检查上次修改的日期,如果它比您已有的日期更新,则可以下载


另一种方法是执行GET请求,并将
HttpWebRequest
对象的
IfModifiedSince
属性设置为您当前拥有的文件的时间戳。如果服务器上的文件较新,将下载该文件。否则,您将得到状态代码304(未修改)。

为什么这是一个XML文件?您认为XML文件的最后修改日期可能不同吗?还有,什么样的服务器?您可以制作一个C#(或任何语言)通用处理程序(或脚本或页面),它接受一个参数
FileName
(XML文件)并将上次修改的日期写入输出。然后,如果你喜欢这个日期,你就开始下载。谢谢你的回答,但我的问题是如何获得最后修改的日期?它保存在哪里以及如何获取it@Youssef,看看我的答案,我想这可能是你想要的。
public void ProcessRequest(HttpContext context)
{
 context.Response.ContentType = "text/plain";
 string fileName = context.Request.QueryString.Get("fileName");
 FileInfo fileInfo = new FileInfo(Server.MapPath(".") + "/" + fileName);
 context.Response.Write(fileInfo.LastWriteTime.ToString());
}