を上書きするDirectory.Delete()とDirectory.CreateDirectoryを()を使用して、私はこのコードを使用して、フォルダを上書き/作成したい:私<code>WebApi</code>アクションメソッドでフォルダ
string myDir = "...";
if(Directory.Exists(myDir))
{
Directory.Delete(myDir, true);
}
Directory.CreateDirectory(myDir);
// 1 - Check the dir
Debug.WriteLine("Double check if the Dir is created: " + Directory.Exists(myDir));
// Some other stuff here...
// 2 - Check the dir again
Debug.WriteLine("Check again if the Dir still exists: " + Directory.Exists(myDir));
問題
奇妙なことに、ディレクトリを作成した直後に、ディレクトリが存在しないことがあります。
最初にdirを確認するとき(番号1の場合)。 Directory.Exist()
はtrue
、その他の場合はfalse
を返します。 2番目の時間(2番はどこか)にdirをチェックすると同じことが起こります。コードのこの部分の
ノート
- いずれも、例外をスローしません。
- ウェブサイトをサーバーに公開するときにのみこれを再現できます。 (Windows server 2008)
- 同じフォルダにアクセスすると起こります。
質問
- これは、同時実行の問題の競合状態ですか?
WebApi
またはオペレーティングシステムが同時性を処理していませんか?- これは、フォルダを上書きする正しい方法ですか?
- 同じファイルに対して多数のAPIリクエストがある場合、ファイルを手動でロックする必要がありますか?
または一般に:
- この奇妙な行動の理由は何ですか?
UPDATE:
代わり
Directory
のDirectoryInfo
とRefresh()
を使用することで問題を解決していません。 削除の再帰オプションがtrue
ときのみ発生します。 (ディレクトリは空ではありません)。
ディレクトリはファイル共有ですか(つまり、Webサーバー以外のマシン上のディスクですか)。 – jlew
@jlewいいえ、それはWebサーバーと同じマシン上にあります。 –