使用FileInfo查看文件何时更新...在另一台服务器上

时间:2011-11-23 17:24:48

标签: asp.net .net system.io.fileinfo

嘿伙计们,我正在为我们的一位客户提供一个车辆Feed到一个自动编码器网站。每天午夜(ish),新的XML文件将上传到我们的FTP,并覆盖当前的文件。目前他有两个相同的网站,并且需要将文件上传到两者,我正在考虑设置它,这样两个网站都可以使用相同的XML文件,这样我们就可以减少错误的风险并说服。

拉动文件效果很好,两个网站都可以读取XML文件,并且没有显示库存的问题。当我尝试显示文件上次更新的日期时,会出现此问题。我创建了一个小片段,用于读取文件更新的日期并显示"最后更新:和日期"但是当我尝试引用非本地文件时,我收到一条错误,上面写着"不支持URI格式"。有没有人知道这样做的方法,或者它是否可能?

目前是什么

FileInfo fileInfo = new FileInfo(Server.MapPath("~/feed/VEHICLES.XML"));
DateTime timeOfCreation = fileInfo.LastWriteTime;

我尝试了什么

FileInfo fileInfo = new FileInfo("http://www.autodealername.com/feed/VEHICLES.XML");
DateTime timeOfCreation = fileInfo.LastWriteTime;

这不好

6 个答案:

答案 0 :(得分:1)

这可以通过FTP完成,因为您已经在使用它了。

http://msdn.microsoft.com/en-us/library/system.net.ftpwebresponse.lastmodified.aspx

答案 1 :(得分:0)

FileInfo使用来自底层文件系统的信息,该信息不是通过HTTP提供的。你需要考虑其他方式。

答案 2 :(得分:0)

如果以这种方式加载文件:

FileInfo fileInfo = new FileInfo("http://www.autodealername.com /feed/VEHICLES.XML");

很可能是IIS或该域/站点上的Web服务器检索到的文件,这与直接从文件系统打开文件不同。

我认为你至少有两种选择:

  • \\machinename\ShareName\FileName;
  • 等网络​​共享中打开文件
  • 在远程服务器(WCF或XML Web服务)上创建一个服务端点,该端点获取文件名并返回您需要的信息;

答案 3 :(得分:0)

您可以尝试使用HEAD方法使用WebRequest并查找Last-Modified标头。

这是我用过的代码......

var web = WebRequest.Create("http://cdn.sstatic.net/stackoverflow/img/sprites.png?v=4") as HttpWebRequest;
web.Method = "HEAD";
var response = web.GetResponse();
var lastModified = DateTime.Parse(response.Headers["last-modified"]);
Console.WriteLine(lastModified);

以下是http响应的样子(来自Fiddler)......

HTTP/1.1 200 OK
Server: nginx/0.8.36
Date: Wed, 23 Nov 2011 17:37:44 GMT
Content-Type: image/png
Connection: keep-alive
Cache-Control: max-age=604800
Last-Modified: Tue, 06 Sep 2011 21:44:29 GMT
ETag: "6237328de6ccc1:0"
Content-Length: 19706
X-Cache: HIT
Accept-Ranges: bytes

答案 4 :(得分:0)

您还可以将更新的字段添加到Feed中,以便您可以从Feed本身获取最后一次更新。

RSS pubDatehttp://www.w3schools.com/rss/rss_tag_pubdate.asp

<?xml version="1.0" encoding="ISO-8859-1" ?>
<rss version="2.0">

<channel>
  <title>W3Schools Home Page</title>
  <link>http://www.w3schools.com</link>
  <description>Free web building tutorials</description>

  <!-- YOU COULD USE THIS -->
  <pubDate>Thu, 27 Apr 2006</pubDate>

  <item>
    <title>RSS Tutorial</title>
    <link>http://www.w3schools.com/rss</link>
    <description>New RSS tutorial on W3Schools</description>
  </item>
</channel>

</rss>

原子updatedhttp://www.atomenabled.org/developers/syndication/atom-format-spec.php#rfc.section.1.1

<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title>Example Feed</title> 
  <link href="http://example.org/"/>

  <!-- YOU COULD USE THIS -->
  <updated>2003-12-13T18:30:02Z</updated>

  <author> 
    <name>John Doe</name>
  </author> 
  <id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id>

  <entry>
    <title>Atom-Powered Robots Run Amok</title>
    <link href="http://example.org/2003/12/13/atom03"/>
    <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
    <updated>2003-12-13T18:30:02Z</updated>
    <summary>Some text.</summary>
  </entry>

</feed>

答案 5 :(得分:0)

也许尝试使用FileSystemWatcher类,它可以在文件被更改,修改等时通知您。Take a look at it

祝你好运!