C#中 使用 WebRequestMethods.Ftp.GetDateTimestamp 获取ftp文件最后修改时间

study_ 2012-02-04 04:34:45
具体代码如下,如第一次获取文件aa.txt的修改时间时可以得到(2012-02-04 16:35:25),第二次获取的时候(实际上aa.txt文件已经被修改,及修改时间变了,如2012-02-04 16:35:40),但是读取出来的时间仍然为(2012-02-04 16:35:25),不知是何原因??求解

public static DateTime GetFileModifyDateTime(string ftpServerIP,string ftpFolder,string ftpUserID,string ftpPwd, string fileName)
{
FtpWebRequest reqFTP=null;
try
{
if (ftpFolder != "")
{
ftpFolder = ftpFolder.Replace("/", "").Replace("\\", "");
ftpFolder = "/" + ftpFolder;
}
string ftpPath = "ftp://" + ftpServerIP + ftpFolder + "/" + fileName;

reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpPath));

reqFTP.UseBinary = true;
//reqFTP.UsePassive = false;
reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPwd);

reqFTP.Method = WebRequestMethods.Ftp.GetDateTimestamp;

FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();

DateTime dt = response.LastModified;

response.Close();
response = null;
reqFTP = null;
return dt;
}
catch (Exception ex)
{
throw ex;
}
}
...全文
875 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
study_ 2012-02-05
  • 打赏
  • 举报
回复
大家帮帮忙啊,谁遇到过啊
study_ 2012-02-05
  • 打赏
  • 举报
回复
而且用IE打开ftp,下载的文件时间都是不变的
study_ 2012-02-05
  • 打赏
  • 举报
回复
我对CachePolicy 进行了设置,如下:
reqFTP.CachePolicy = new System.Net.Cache.RequestCachePolicy(System.Net.Cache.RequestCacheLevel.NoCacheNoStore);
监视的结果 response.IsFromCache =false;

不设置CachePolicy ,response.IsFromCache 依然是false;

应该不是缓存的问题,在别的机器上都可以,我怀疑是那台ftp服务器环境的问题,但是一时查不出来具体的原因
study__ 2012-02-05
  • 打赏
  • 举报
回复
问题已解决
用IIS6自带的FTP时,发现用FTP客户端直接在FTP上修改文件会有缓存,解决方法是在HKLM\System\CurrentControlSet\Services\Inetinfo\Parameters\ 下新建DisableMemoryCache禁用IIS缓存

· DisableMemoryCache(REG_DWORD)。如果设置为1(默认为0),则禁用用户模式的IIS缓存。在缓存命中率非常小的时候,可以完全禁用缓存,以避免与缓存代码路径有关的开销。

重启IIS

http://www.haogongju.net/art/310933
蔡袅 2012-02-04
  • 打赏
  • 举报
回复
看一下response.IsFromCache 返回是否为true
确定是否是缓存中获取的旧数据。
蔡袅 2012-02-04
  • 打赏
  • 举报
回复
按说应该没错呀,获取最后日期;
官方demo也是这样:
FtpWebRequest request = (FtpWebRequest)WebRequest.Create (serverUri);
request.Method = WebRequestMethods.Ftp.GetDateTimestamp;
FtpWebResponse response = (FtpWebResponse)request.GetResponse ();
Console.WriteLine ("{0} {1}",serverUri,response.LastModified);
study_ 2012-02-04
  • 打赏
  • 举报
回复
急,在线等

111,132

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧