0

嘿伙计们,我正在为我们的一位客户向汽车经销商网站提供车辆信息。每天晚上午夜(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;

这不好

4

6 回答 6

1

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

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

于 2011-11-23T17:35:18.267 回答
0

FileInfo使用无法通过 HTTP 获得的来自底层文件系统的信息。您需要考虑其他方式。

于 2011-11-23T17:32:03.663 回答
0

也许尝试使用 FileSystemWatcher 类,它可以在文件更改、修改等时通知您。看看它

祝你好运!

于 2011-11-24T00:23:19.463 回答
0

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

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

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

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

  • 从网络共享打开文件,例如\\machinename\ShareName\FileName
  • 在远程服务器(WCF 或 XML Web 服务)上创建一个服务端点,该端点获取文件名并返回您需要的信息;
于 2011-11-23T17:34:24.440 回答
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
于 2011-11-23T17:47:49.470 回答
0

您还可以将更新的字段添加到提要中,以便您可以从提要本身获取上次更新的时间。

RSS pubDate: http://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>

原子updated: http: //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>
于 2011-11-23T17:50:39.623 回答