刚创建文件夹后,远程文件夹的Directory.Exists返回false

时间:2016-05-16 13:45:39

标签: c# .net unc

我在服务器上有应用程序" A"和" B" (都有Windows Server 2012)。申请" A"在本地创建文件夹就在" B"检查服务器上的远程路径是否存在文件夹" A"。申请" B"错误约1.5秒。之后它开始变为现实:

...
//directory.Exists = false
LogInfo(String.Format("Timestamp: {0}", DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture)));
//2016-05-16 13:15:37.281

while (!directory.Exists)
{
    directory.Refresh();
}
//directory.Exists = true
LogInfo(String.Format("Timestamp: {0}", DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture)));
//2016-05-16 13:15:38.546

创建文件夹的父文件夹是为用户共享的,用于运行应用程序" A"。

给刚刚创建的文件夹或其他问题提供权限是一个问题吗?

有没有解决方法?因为我需要知道应用程序" B"如果文件夹已创建并且循环而不是解决方案。

2 个答案:

答案 0 :(得分:0)

由于信息有限(例如,UNC路径是否有任何复制),我认为您的问题围绕着SMB2.0。

尝试从this链接

在服务器B上禁用此功能(通过CMD提示)
$(this)

完成后重启服务器B.

SMB2.0旨在通过构建有关UNC共享的缓存信息来帮助提高性能,但是如果您需要应用程序需要在第二次检查文件(并且我还有一个也是如此),它可能会对功能产生负面影响

答案 1 :(得分:0)

使用此帖子中有关SMB的信息尝试了不同的选项:

Windows file share: why sometimes newly created files aren't visible for some period of time?

https://technet.microsoft.com/en-us/library/ff686200(v=ws.10).aspx

将DirectoryCacheLifetime设置为ZERO并没有帮助。 将FileNotFoundCacheLifetime设置为ZERO对我的情况有帮助。