Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 正在使用FileInfo查看文件何时更新。。。在另一台服务器上_Asp.net_.net_System.io.fileinfo - Fatal编程技术网

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

Asp.net 正在使用FileInfo查看文件何时更新。。。在另一台服务器上,asp.net,.net,system.io.fileinfo,Asp.net,.net,System.io.fileinfo,嘿,伙计们,我正在为我们的一位客户向一家汽车经销商网站提供车辆信息。每晚午夜(ish),新的XML文件被上传到我们的FTP,并覆盖当前文件。目前,他有两个相同的网站,文件需要上传到两个网站,我正在考虑设置它,这样两个网站都可以使用相同的XML文件,这样我们就可以减少错误的风险,并获得成功 拉取该文件非常有效,两个网站都可以读取XML文件,并且在显示清单时没有问题。当我试图显示文件上次更新的日期时,出现了这个问题。我创建了一个小片段,读取文件更新的日期,并显示“上次更新:和日期”,但当我尝试引用非

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

这不好

FileInfo
使用来自底层文件系统的信息,而这些信息在HTTP上不可用。您需要考虑其他方法。

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

FileInfo fileInfo = new FileInfo("http://www.autodealername.com /feed/VEHICLES.XML");
该文件很可能是由该域/站点上的IIS或Web服务器检索到的,这与直接从文件系统打开该文件不同

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

  • 从网络共享中打开文件,如
    \\machinename\ShareName\FileName
  • 在远程服务器(WCF或XMLWeb服务)上创建一个服务端点,该服务端点将获取文件名并返回所需的信息
这可以通过FTP完成,因为您已经在使用它了


您可以尝试使用HEAD方法使用WebRequest并查找上次修改的头

这是我使用的代码

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)


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

RSS
pubDate


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


祝你好运

两个网站都在同一台服务器上吗?不,它们是分开托管的。一个更简单的方法可能是在其中一个网站上编写web服务,让实际的网站调用此web服务,而不是使用重复的XML文件。是的,我很可能会这样做,我只是想知道我是否对文件做了什么错事。第一段的最后一句话应该是“方便”吗?
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
<?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>
<?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>