The attached code randomly throws the following error:
{"ErrorCode":"11","Status":404,"URL":"/objects/0","Method":"POST","Exception":{"Name":"COMException","Message":"Not found. (The specified upload session 1 does not exist.)","InnerException":{"Name":"MFilesException","Message":"Not found. (The specified upload session 1 does not exist.)","StackText":"Error reference ID: 1c32dda2-06a9-4daa-b684-758072d379e6","ErrorCode":"11"}},"Stack":"Error reference ID: 1c32dda2-06a9-4daa-b684-758072d379e6","Message":"Not found. (The specified upload session 1 does not exist.)","IsLoggedToVault":true,"IsLoggedToApplication":true,"ExceptionName":"COMException"}
In every case a UploadID is returned so I know that it's not null when this error is thrown.
I get:
{
"UploadID":1,
"Title":"33a04367-6c66-44be-8d31-b2f40c972192",
"Extension":"pdf",
"Size":720643,
"FileInformationType":0,
"TempFilePath":""
}
Is there something wrong with my code or do I need to configure something for this to be reliable?
public async Task<(string docId, string errMsg)> oAuthDocumentUpload(string uri, string VaultGUID, string ConnectionName, ObjectCreationModel? obj, string filePath,string token)
{
if (VaultGUID.Contains("{"))
VaultGUID = VaultGUID.Replace("{", "").Replace("}", "");
var options = new RestClientOptions(uri)
{
Timeout=TimeSpan.FromMinutes(2),
};
var client = new RestClient(uri);
var uploadRequest = new RestRequest("/REST/files", Method.Post);
uploadRequest.AddHeader("Content-Type", "multipart/form-data");
uploadRequest.AlwaysMultipartFormData = true;
uploadRequest.AddFile("file", filePath);
uploadRequest.AddHeader("Authorization", "Bearer " + token);
uploadRequest.AddHeader("X-AuthConfig", ConnectionName);
uploadRequest.AddHeader("X-Vault", VaultGUID);
var uploadResponse = await client.ExecuteAsync(uploadRequest);
if (!uploadResponse.IsSuccessful)
{
_log.Error($"File upload failed: {uploadResponse.ErrorException}");
return ("", $"File upload failed: {uploadResponse.ErrorException}");
}
var uploadInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<UploadInfo>(uploadResponse.Content);
uploadInfo.Extension = Path.GetExtension(filePath).TrimStart('.').ToLower();
//uploadInfo.UploadID
obj.Files = new[] { uploadInfo };
var requestCreateObject = new RestRequest("/REST/objects/0", Method.Post);
requestCreateObject.AddJsonBody(obj);
requestCreateObject.AddHeader("Authorization", "Bearer " + token);
requestCreateObject.AddHeader("X-AuthConfig", ConnectionName);
requestCreateObject.AddHeader("X-Vault", VaultGUID);
var createObjectResponse =await client.ExecuteAsync(requestCreateObject);
if (!createObjectResponse.IsSuccessful)
{
Console.WriteLine($"Object creation failed: {createObjectResponse.ErrorException}");
_log.Error($"Object creation failed: {createObjectResponse.ErrorException}");
return ("", $"File upload failed: {createObjectResponse.ErrorException}");
}
var objectVersion = Newtonsoft.Json.JsonConvert.DeserializeObject<ObjectVersion>(createObjectResponse.Content);
string mfilesDocId = objectVersion?.ObjVer?.ID != null
? objectVersion.ObjVer.ID.ToString()
: string.Empty;
return (mfilesDocId, "");
}
