More details about CRM error : "Solution manifest import: FAILURE"
More details about CRM error : "Solution manifest import: FAILURE"
我正在使用 C# 创建 CRM 的导入/导出工具。
有时,我会遇到一个导入错误,我的 catch 中只有这条消息 "Solution manifest import: FAILURE"。我试图将其转换为它的类型 (FaultException),但我没有更多详细信息。
如果我直接在 CRM 中导入相同的文件,我会收到更好的错误消息(例如:"Import of solution xxxx failed. The following components are missing in yout system [...]")。
有没有办法得到这个完整的消息?
这是我的代码:
try
{
_serviceProxy.Execute(impSolReq);
}
catch (Exception ex)
{
if (ex is FaultException<OrganizationServiceFault>)
MessageBox.Show("Error during import. More details: " + ((FaultException<OrganizationServiceFault>)ex).Detail);
else
MessageBox.Show("Error during import. More details: " + ex.Message);
}
感谢您的回答!
使用 ImportSolutionRequest
.
导入 Dynamics CRM 解决方案
ImportSolutionRequest
有一个 属性 包含解决方案导入作业的 ID。您需要此 ID 才能监控作业进度并在导入失败时获取错误详细信息。
请求的实例化可能如下所示:
Guid importJobId = Guid.NewGuid();
var request = new ImportSolutionRequest
{
ConvertToManaged = true,
CustomizationFile = buffer, // a byte[] array holding the solution contents
ImportJobId = importJobId,
OverwriteUnmanagedCustomizations = true,
PublishWorkflows = true,
SkipProductUpdateDependencies = false
};
执行请求。当发生导入错误时,您可以使用作业 ID 检索错误详细信息。
try
{
_service.Execute(request);
}
catch (FaultException<OrganizationServiceFault> ex)
{
if (ex.Detail.ErrorCode == -2147188685) // ImportSolutionError
{
Entity job = _service.Retrieve("importjob", importJobId, new ColumnSet { AllColumns = true });
// TODO: process job error details.
}
throw;
}
属性 importjob.data
包含一个 XML 文档,其中包含您要查找的详细信息。
ImportSolutionRequest
是同步执行的,很容易超时。但是可以安全地忽略超时,因为导入过程在后台继续 运行。您可以通过定期检索导入作业记录来跟踪进度。只要属性 importjob.completedon
是 null
,作业仍然是 运行ning.
我正在使用 C# 创建 CRM 的导入/导出工具。 有时,我会遇到一个导入错误,我的 catch 中只有这条消息 "Solution manifest import: FAILURE"。我试图将其转换为它的类型 (FaultException),但我没有更多详细信息。
如果我直接在 CRM 中导入相同的文件,我会收到更好的错误消息(例如:"Import of solution xxxx failed. The following components are missing in yout system [...]")。
有没有办法得到这个完整的消息?
这是我的代码:
try
{
_serviceProxy.Execute(impSolReq);
}
catch (Exception ex)
{
if (ex is FaultException<OrganizationServiceFault>)
MessageBox.Show("Error during import. More details: " + ((FaultException<OrganizationServiceFault>)ex).Detail);
else
MessageBox.Show("Error during import. More details: " + ex.Message);
}
感谢您的回答!
使用 ImportSolutionRequest
.
ImportSolutionRequest
有一个 属性 包含解决方案导入作业的 ID。您需要此 ID 才能监控作业进度并在导入失败时获取错误详细信息。
请求的实例化可能如下所示:
Guid importJobId = Guid.NewGuid();
var request = new ImportSolutionRequest
{
ConvertToManaged = true,
CustomizationFile = buffer, // a byte[] array holding the solution contents
ImportJobId = importJobId,
OverwriteUnmanagedCustomizations = true,
PublishWorkflows = true,
SkipProductUpdateDependencies = false
};
执行请求。当发生导入错误时,您可以使用作业 ID 检索错误详细信息。
try
{
_service.Execute(request);
}
catch (FaultException<OrganizationServiceFault> ex)
{
if (ex.Detail.ErrorCode == -2147188685) // ImportSolutionError
{
Entity job = _service.Retrieve("importjob", importJobId, new ColumnSet { AllColumns = true });
// TODO: process job error details.
}
throw;
}
属性 importjob.data
包含一个 XML 文档,其中包含您要查找的详细信息。
ImportSolutionRequest
是同步执行的,很容易超时。但是可以安全地忽略超时,因为导入过程在后台继续 运行。您可以通过定期检索导入作业记录来跟踪进度。只要属性 importjob.completedon
是 null
,作业仍然是 运行ning.