我们有一个运行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次,所以我们不确定从哪里开始。
谢谢!
正如评论中所提到的,这是由于网络状况不佳引起的,我们已经将文件夹创建移动到实际的Web服务器本地驱动器上,现在一切正常