cancel
Showing results for 
Search instead for 
Did you mean: 
Announcements
Update: Find information on Dropbox support during COVID-19 here
Close
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted

ListFolderAsync() throws InvalidCastException when file or folder name is ISO-8601 date

Explorer | Level 3

Description

When a file or a folder exists with a name that is an ISO-8601 date (such as "2019-12-25T23:58:05"), the ListFolderAsync() method fails by throwing a System.InvalidCastException.

Steps to reproduce

  1. Create a folder test in the root folder of your Dropbox.
  2. Upload a file with the name 2019-12-25T23:58:05 to the folder /test or create a new folder with that name as a subfolder of the folder /test. Make sure that there is no file extension.
  3. Run the following C# program, after providing a valid access token: 
public class Program
{
    static void Main(string[] args)
    {
        using var dbx = new DropboxClient(oauth2AccessToken: "...");
        var result = dbx.Files.ListFolderAsync(
            path: "/test"
        ).GetAwaiter().GetResult();
    }
}


Expected result

The method should return a list of Dropbox.Api.Files.Metadata objects, including one object representing the file or folder created above.

Actual result

The program crashes with the following exception:

System.InvalidCastException
HResult=0x80004002
Message=Value '12/25/2019 23:58:05' is not valid System.String type
Source=Dropbox.Api
StackTrace:
at Dropbox.Api.Stone.JsonReader.ReadValue[T]()
at Dropbox.Api.Stone.JsonReader.Dropbox.Api.Stone.IJsonReader.ReadString()
at Dropbox.Api.Stone.StringDecoder.Decode(IJsonReader reader)
at Dropbox.Api.Files.FileMetadata.FileMetadataDecoder.SetField(FileMetadata value, String fieldName, IJsonReader reader)
at Dropbox.Api.Stone.StructDecoder`1.DecodeFields(IJsonReader reader)
at Dropbox.Api.Files.Metadata.MetadataDecoder.Decode(String tag, IJsonReader reader)
at Dropbox.Api.Stone.UnionDecoder`1.DecodeFields(IJsonReader reader)
at Dropbox.Api.Stone.StructDecoder`1.Decode(IJsonReader reader)
at Dropbox.Api.Stone.ListDecoder`1.TryReadArrayItem(IJsonReader reader, IDecoder`1 decoder, T& value)
at Dropbox.Api.Stone.ListDecoder`1.Decode(IJsonReader reader, IDecoder`1 itemDecoder)
at Dropbox.Api.Stone.StructDecoder`1.ReadList[TItem](IJsonReader reader, IDecoder`1 itemDecoder)
at Dropbox.Api.Files.ListFolderResult.ListFolderResultDecoder.SetField(ListFolderResult value, String fieldName, IJsonReader reader)
at Dropbox.Api.Stone.StructDecoder`1.DecodeFields(IJsonReader reader)
at Dropbox.Api.Stone.StructDecoder`1.Decode(IJsonReader reader)
at Dropbox.Api.Stone.JsonReader.Read[T](String json, IDecoder`1 decoder)
at Dropbox.Api.DropboxRequestHandler.<Dropbox-Api-Stone-ITransport-SendRpcRequestAsync>d__12`3.MoveNext()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in /_/src/System.Private.CoreLib/shared/System/Runtime/ExceptionServices/ExceptionDispatchInfo.cs:line 63
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in /_/src/System.Private.CoreLib/shared/System/Runtime/CompilerServices/TaskAwaiter.cs:line 180
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) in /_/src/System.Private.CoreLib/shared/System/Runtime/CompilerServices/TaskAwaiter.cs:line 151
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() in /_/src/System.Private.CoreLib/shared/System/Runtime/CompilerServices/TaskAwaiter.cs:line 369
at DropboxUpload.Program.Main(String[] args) in C:\my\vs\repos\DropboxUpload\Program.cs:line 681

This exception was originally thrown at this call stack:
Dropbox.Api.Stone.JsonReader.ReadValue<T>()
Dropbox.Api.Stone.JsonReader.Dropbox.Api.Stone.IJsonReader.ReadString()
Dropbox.Api.Stone.StringDecoder.Decode(Dropbox.Api.Stone.IJsonReader)
Dropbox.Api.Files.FileMetadata.FileMetadataDecoder.SetField(Dropbox.Api.Files.FileMetadata, string, Dropbox.Api.Stone.IJsonReader)
Dropbox.Api.Stone.StructDecoder<T>.DecodeFields(Dropbox.Api.Stone.IJsonReader)
Dropbox.Api.Files.Metadata.MetadataDecoder.Decode(string, Dropbox.Api.Stone.IJsonReader)
Dropbox.Api.Stone.UnionDecoder<T>.DecodeFields(Dropbox.Api.Stone.IJsonReader)
Dropbox.Api.Stone.StructDecoder<T>.Decode(Dropbox.Api.Stone.IJsonReader)
Dropbox.Api.Stone.ListDecoder<T>.TryReadArrayItem(Dropbox.Api.Stone.IJsonReader, Dropbox.Api.Stone.IDecoder<T>, out T)
Dropbox.Api.Stone.ListDecoder<T>.Decode(Dropbox.Api.Stone.IJsonReader, Dropbox.Api.Stone.IDecoder<T>)
...
[Call Stack Truncated]

 

1 Reply 1
Highlighted

Re: ListFolderAsync() throws InvalidCastException when file or folder name is ISO-8601 date

Dropboxer
Dropboxer

Thank you for the well written bug report! I can reproduce this issue here. We'll look into it and I'll follow up on this thread once I have an update on it from the team.

Work Smarter with Dropbox

The way we work is changing. Share and discover new ways to work smarter with Dropbox in our community.

Sound good? Let's get started.
Who's talking

Top contributors to this post

What do Dropbox user levels mean?
Need more support?