访问网络驱动器的Web服务器上的Intermittent System.IO.DirectoryNotFoundException

问题描述 投票:-1回答:1

我们有一个运行hangfire的Web服务器,它使用以下路径示例间歇性地轮询共享网络驱动器:

\\SXXXXX\XXXXX$\XXX\ 

它会间歇性地抛出System.IO.DirectoryNotFoundException但是该目录是由同一段代码创建的。

它似乎运行良好的8/10次,并在2次抛出异常它实际上删除文件夹,如果它是空的,这是在异常点之后运行的代码?

这是一个示例代码块:

 var downloadDirectory = "*OMITTED*
        Directory.CreateDirectory(downloadDirectory);
        TestDirectoryCreatedOnNetwork(downloadDirectory);


var dir = new DirectoryInfo(downloadDirectory);

        if (dir.GetFiles().Count() == 0)
        {
            Directory.Delete(downloadDirectory);
            return false;
        }

谷歌搜索让我们认为:Directory.CreateDirectory()可能会遇到延迟,所以我们添加了以下内容:

private static void TestDirectoryCreatedOnNetwork(string directory)
    {
        int waitCount = 10;
        do
        {
            if (Directory.Exists(downloadDirectory))
            {
                break;
            }

            Thread.Sleep(10000); // sleep 100ms
            waitCount--;
            if (waitCount <= 0)
            {
                throw new Exception("Failed to create directory");
            }
        } while (true);
    }

我们知道代码是有效的,因为它运行了8/10次,所以我们不确定从哪里开始。

谢谢!

c# asp.net-mvc hangfire
1个回答
-1
投票

正如评论中所提到的,这是由于网络状况不佳引起的,我们已经将文件夹创建移动到实际的Web服务器本地驱动器上,现在一切正常

© www.soinside.com 2019 - 2024. All rights reserved.