我正在创建工作流活动以从自定义实体下载注释附件。运行工作流程抛出
System.NullReferenceException:未将对象引用设置为对象的实例。
这是我的代码:
private static string SaveFile(string fileName, string noteBody)
{
string outputFileName = @"C:\temp\" + fileName;
if (!string.IsNullOrEmpty(noteBody))
{
// Download the attachment in the current execution folder.
byte[] fileContent = Convert.FromBase64String(noteBody);
System.IO.File.WriteAllBytes(outputFileName, fileContent);
}
else
{
throw new InvalidPluginExecutionException("File content is empty or cannot be retrieved");
}
return outputFileName;
}
调试它会显示错误:
System.IO.File.WriteAllBytes(outputFileName, fileContent);
从Visual Studio我得到此异常
请求System.Security.Permissions.FileIOPermission类型的权限
答案 0 :(得分:0)
CRM在线插件&工作流程必须注册&在沙箱隔离模式下运行,这是安全的。部分信任云(不完全信任)。
因此,您无法从插件/工作流代码访问Server中的C:\temp\
。您将获得FileIOPermission异常。
开发人员可以选择在沙箱中注册他们的插件,称为部分信任,或者在沙箱之外注册,称为完全信任。内部部署和面向Internet的Microsoft Dynamics 365部署支持完全信任。对于Microsoft Dynamics 365(在线)部署,必须在沙箱中注册插件或自定义工作流活动(部分信任)
在沙箱中阻止访问文件系统,系统事件日志,某些网络协议,注册表等。