6

ネットワーク共有からファイルを読み取ると、作成時刻が最後の書き込み時刻に更新されます。これにより、System.Configuration.Configurationで問題が発生します。これは、ファイルが変更されたと見なされ、例外がスローされるためです(構成ファイルが別のプログラムによって変更された)。回避策は、作成時間を事前に手動で最後の書き込み時間に設定することです。しかし、これが既知の問題であるかどうかを知りたいのですが。

ここにいくつかのテストコードがあります:

    string filePath = @"X:\SomeFile.txt";
    FileInfo fileInfo = new FileInfo(filePath);
    DateTime creationTimeBeforeRead = fileInfo.CreationTimeUtc;
    FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
    byte[] result = new byte[fileStream.Length];
    fileStream.Read(result, 0, (int)fileStream.Length);
    fileStream.Close();
    fileInfo.Refresh();
    DateTime creationTimeAfterRead = fileInfo.CreationTimeUtc;

問題が.netにあるのか、Windows APIにあるのか、サーバー側にあるのかわかりません。誰かが何か洞察を持っていますか?

4

1 に答える 1

1

これは古い質問ですが、自宅のLinuxサーバー(非常に古いNASボックス)でいくつかの画像ファイルを整理しているときに遭遇しました。ファイルの作成時間はファイルのコピー時間であることが判明しましたが、問題はEXT3 Linuxファイル形式がどのタイプの共有(NFSおよびSAMBA)でもサポートされていないことが原因であることがわかりました。ファイルをEXT4およびXFSファイルシステム形式に移動すると、問題が解決しました。

于 2013-09-17T14:33:53.267 に答える