A customer of ours is running into the error below:
System.ArgumentOutOfRangeException: Value should match pattern '\A(?:((/|id:).*|nspath:[0-9]+:.*)|ns:[0-9]+(/.*)?)\z' Parameter name: file
at Dropbox.Api.Sharing.ListFileMembersArg..ctor(String file, IEnumerable`1 actions, Boolean includeInherited, UInt32 limit)
at Stealthbits.StealthAUDIT.DataCollectors.Dropbox.Tasks.Scan.DropboxScanHelper.<>c__DisplayClass58_4.<ProcessResources>b__6()
at Stealthbits.StealthAUDIT.DataCollectors.Dropbox.Tasks.Scan.DropboxScanHelper.AwaitReturn[TResult](Func`1 callback)"
I censored the path for the customer but the structure is the same as the path below.
Failed to process resource /3- Folder1/1 - Folder2/Folder3 - Folder3 - Folder3/1 - Folder4/01.23.4567: File File_File_01.23.4567.pdf
Code using Dropbox 4.9.4, I will try updating to 5.5.0 (6.8 is giving me dependency errors):
userClient = client.AsMember(member.Profile.TeamMemberId);
adminClient = userAdmin.WithPathRoot(new PathRoot.NamespaceId(namespaceID));
var FolderContents = AwaitReturn(() => adminClient.Files.ListFolderAsync(namespaceID, false, true, false, true));
var entries = FolderContents.Entries;
while (FolderContents.HasMore)
{
FolderContents = AwaitReturn(() => adminClient.Files.ListFolderContinueAsync(FolderContents.Cursor));
foreach (var entry in FolderContents.Entries)
{
entries.Add(entry);
}
}
foreach (Metadata resource in entries)
{
if (resource.IsFile)
{
List<Sharing.UserMembershipInfo> users = new List<Sharing.UserMembershipInfo>();
FileMetadata fileData = resource.AsFile;
//Errors here
var fileMembers = AwaitReturn(() =>
userClient.Sharing.ListFileMembersAsync(fileData.Id));
users.AddRange(fileMembers.Users);
while (!String.IsNullOrEmpty(fileMembers.Cursor))
{
fileMembers = AwaitReturn(() => userClient.Sharing.ListFileMembersAsync(fileMembers.Cursor));
users.AddRange(fileMembers.Users);
}
foreach (var member in users)
{
//Process member
}
}
}
TResult AwaitReturn<TResult>(Func<Task<TResult>> callback)
{
using (Task<TResult> task = callback())
{
task.Wait();
return task.Result;
}
}