0

こんにちは、クライアントの 1 人の自動車ディーラーの Web サイトに車両フィードを送信しています。毎晩真夜中に新しい XML ファイルが FTP にアップロードされ、現在の XML ファイルが上書きされます。現在、彼は 2 つの同一の Web サイトを持っており、ファイルを両方にアップロードする必要があります。エラーのリスクを減らして納得できるように、両方の Web サイトが同じ XML ファイルを使用できるように設定することを検討していました。

ファイルのプルはうまく機能し、両方の Web サイトで 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

FileInfoHTTPでは利用できない基盤となるファイルシステムからの情報を使用します。他の方法を考える必要があります。

于 2011-11-23T17:32:03.663 に答える
0

この方法でファイルをロードした場合:

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

ほとんどの場合、ファイルはそのドメイン/サイトの IIS または Web サーバーによって取得されます。これは、ファイル システムから直接ファイルを開くこととは異なります。

少なくとも2つの選択肢があると思います:

  • のようなネットワーク共有からファイルを開きます\\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 に答える
0

FileSystemWatcher クラスを使用してみてください。ファイルが変更、変更されたときに通知を受け取ることができます。それを見てください

幸運を!

于 2011-11-24T00:23:19.463 に答える