We are using an online service to create chart images from a URL string and display these images in the scheduled report. The online service works just fine and when we evaluate the concatenated URL string from the expression editor, we can see the generated image as well. However, when we manually run the report to see the result and fine-tune the report if necessary, appsheet creates the below error and does not create the report.
Here is the error message if you can’t read it:
Error:
"System.ArgumentException: Illegal characters in path.\r\n at System.IO.Path.CheckInvalidPathChars(String path, Boolean checkAdditional)\r\n at System.IO.Path.GetFileName(String path)\r\n at System.IO.Path.GetFileNameWithoutExtension(String path)\r\n at Nirvana.Data.ReplaceTemplateExpressions.ConstructImageValue(Context context, AppType appType, String src, String tableName, AllowedFormatSettings formatSettings) in d:\\a\\1\\s\\V2API\\Workflow\\Template\\TemplateExpression\\ReplaceTemplateExpressions.cs:line 174\r\n at Nirvana.Data.ReplaceTemplateExpressions.ReplaceExpression(Context context, WorkflowTemplateBindContext bindContext, TemplateExpression templateExpression, String templateText, String tableName, Int32[] columnSliceMapping, Change change, AppDataContext appDataContext, UpdateModeEnum updateMode, EmailExpressions emailExpressions) in d:\\a\\1\\s\\V2API\\Workflow\\Template\\TemplateExpression\\ReplaceTemplateExpressions.cs:line 568\r\n at Nirvana.Data.ReplaceTemplateExpressions.Replace(Context context, WorkflowTemplateBindContext bindContext, String templateText, TemplateExpressions templateExpressions, String tableName, Int32[] columnSliceMapping, Change change, AppDataContext appDataContext, UpdateModeEnum updateMode, EmailExpressions emailExpressions, AppErrors appErrors) in d:\\a\\1\\s\\V2API\\Workflow\\Template\\TemplateExpression\\ReplaceTemplateExpressions.cs:line 649\r\n at Nirvana.Data.TemplateHtml.ReplaceTemplateExpressions(Context context, WorkflowTemplateBindContext bindContext, XElement rootElement, String tableName, Int32[] columnSliceMapping, Change change, AppDataContext appDataContext, UpdateModeEnum updateMode, EmailExpressions emailExpressions, AppErrors appErrors) in d:\\a\\1\\s\\V2API\\Workflow\\Template\\TemplateHtml\\TemplateHtml.cs:line 52\r\n at Nirvana.Data.TemplateHtml.Replace(Context context, WorkflowTemplateBindContext bindContext, String tableName, Boolean compatibilityMode, Int32[] columnSliceMapping, Change change, AppDataContext appDataContext, UpdateModeEnum updateMode, EmailExpressions emailExpressions, Templates templates, AppErrors appErrors) in d:\\a\\1\\s\\V2API\\Workflow\\Template\\TemplateHtml\\TemplateHtml.cs:line 81\r\n at Nirvana.Data.TemplateHtml.Replace(Context context, WorkflowTemplateBindContext bindContext, String tableName, Boolean compatibilityMode, Int32[] columnSliceMapping, Change change, AppDataContext appDataContext, UpdateModeEnum updateMode, EmailExpressions emailExpressions, Templates templates, AppErrors appErrors) in d:\\a\\1\\s\\V2API\\Workflow\\Template\\TemplateHtml\\TemplateHtml.cs:line 73\r\n at Nirvana.Data.TemplateHtml.Replace(Context context, WorkflowTemplateBindContext bindContext, String tableName, Boolean compatibilityMode, Int32[] columnSliceMapping, Change change, UpdateModeEnum updateMode, EmailExpressions emailExpressions, Templates templates, AppErrors appErrors) in d:\\a\\1\\s\\V2API\\Workflow\\Template\\TemplateHtml\\TemplateHtml.cs:line 268\r\n at Nirvana.Data.Templates.Replace(Context context, WorkflowTemplateBindContext bindContext, String tableName, Int32[] columnSliceMapping, Change change, UpdateModeEnum updateMode, EmailExpressions emailExpressions, AppErrors appErrors) in d:\\a\\1\\s\\V2API\\Workflow\\Template\\TemplateCommon\\Templates.cs:line 77\r\n at Nirvana.Data.WorkflowTemplate.Replace(Context context, Int32[] columnSliceMapping, Change change, UpdateModeEnum updateMode, EmailExpressions emailExpressions, AppErrors appErrors) in d:\\a\\1\\s\\V2API\\Workflow\\Template\\WorkflowTemplate\\WorkflowTemplate.cs:line 563\r\n at Nirvana.Data.WorkflowActionEmail.GetBody(Context context, String tableName, Int32[] columnSliceMapping, Change change, UpdateModeEnum updateMode, EmailExpressions emailExpressions, AppErrors appErrors) in d:\\a\\1\\s\\V2API\\Workflow\\Action\\WorkflowActionEmail.cs:line 338\r\n at Nirvana.Data.WorkflowActionEmail.Create(Context context, String tableName, Int32[] columnSliceMapping, Change change, UpdateModeEnum updateMode, ActionDefinition actionDefinition, WorkflowLogEvent workflowLogEvent) in d:\\a\\1\\s\\V2API\\Workflow\\Action\\WorkflowActionEmail.cs:line 86\r\n at Nirvana.Data.WorkflowRuleEvaluator.CreateActionResults(Context context, WorkflowActionBase workflowAction, AppTemplate appTemplate, String tableName, Int32[] columnSliceMapping, Change change, UpdateModeEnum updateMode, WorkflowLogEvent workflowLogEvent) in d:\\a\\1\\s\\V2API\\Workflow\\Evaluators\\WorkflowRuleEvaluator.cs:line 138\r\n at Nirvana.Data.WorkflowRuleEvaluator.PerformActions(Context context, AppTemplate appTemplate, String tableName, Int32[] columnSliceMapping, Change change, UpdateModeEnum updateMode, WorkflowLogEvent workflowLogEvent) in d:\\a\\1\\s\\V2API\\Workflow\\Evaluators\\WorkflowRuleEvaluator.cs:line 367\r\n at Nirvana.Data.WorkflowRuleEvaluator.ProcessRule(Context context, String tableName, Int32[] columnSliceMapping, Change change, UpdateModeEnum updateMode) in d:\\a\\1\\s\\V2API\\Workflow\\Evaluators\\WorkflowRuleEvaluator.cs:line 504"
And here is the proof of concept that the URL is evaluated correctly and the image is generated.

