Sorry about that empty message - web app failed.
resdat := string(HttpsPut(url, ExtractFilePath(FileName), ExtractFileName(FileName), headers, '', hcPost));
The parameters being passed into HttpsPut make sense, but it just fails. More precisely, in my Service app, this line works the first two times, then fails the third time; in the CloudStorageDemo, this line always works. The time it takes increases with the size of the file, and it appears that HttpsPut does not return until the request is complete; therefore, a tight loop of calls to TAdvCustomDropBox.Upload seems a valid use case - I've demonstrated that with my hacked CloudStorageDemo.
So is it being a Service that is the problem here? What else can I try? Help, please!