我在服务器上有应用程序" 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"如果文件夹已创建并且循环而不是解决方案。
答案 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对我的情况有帮助。