我将映射文件夹上的以下代码调用到另一个共享
private static void CheckFileNaming(string path)
{
var di = new DirectoryInfo(path);
foreach (var fi in di.EnumerateFiles())
{
if (fi.Name.EndsWith(".battxt"))
{
var name = fi.FullName.Substring(0, fi.FullName.Length - 3);
TaskLogger("Rename " + fi.FullName + " to " + name);
File.Move(fi.FullName, name);
}
}
}
但是我收到了错误
2016-04-26 11:00:58Z: Error occurred:
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileSystemEnumerableIterator`1.CommonInit()
at System.IO.FileSystemEnumerableIterator`1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost)
at System.IO.DirectoryInfo.EnumerateFiles()
at Centrica.EMT.SE.CloudMaster.Program.CheckFileNaming(String path)
at Centrica.EMT.SE.CloudMaster.Program.RunCombiner(String modelVersion, String pythonVersion)
2016-04-26 11:00:58Z: Invalid Signature.
这似乎意味着简单地枚举文件存在问题,但我之前从未见过这个错误,并且在谷歌上找不到任何东西。有没有人见过这个?
答案 0 :(得分:1)
您收到Win32错误,"签名无效"。这表明安全协商失败,这反过来表明您正在尝试枚举远程文件系统上的文件。这可能意味着您的安全凭据无效,或者您的客户端不支持足够高的SMB版本以供服务器接受。
以下知识库文章可能相关:https://support.microsoft.com/en-us/kb/2686098
但要点是:你的代码很可能不会受到责备,这是系统/网络管理员的问题。确保系统配置和更新正确,你应该没问题。
答案 1 :(得分:0)
您的代码中没有问题。这可能是因为目录中文件的权限问题。
System.Security.SecurityException:
The caller does not have the required permission.
这可能是您正在迭代的目录的可能问题。确保您的应用程序在目录中具有完全访问权限(当然至少可以阅读)。