car*_*ier 2 c# import crm dynamics-crm-2011
我正在使用C#为CRM创建导入/导出工具.有时,我遇到导入错误,只有此消息"解决方案清单导入:失败"在我的捕获中.我试图将它转换为它的类型(FaultException),但我没有更多的细节.
如果我直接在CRM中导入相同的文件,我会有一个更好的错误消息(例如,这个例子:"解决方案xxxx的导入失败.你的系统中缺少以下组件[...]").
有没有办法得到这个完整的信息?
这是我的代码:
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);
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的回答!
使用动态CRM解决方案导入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
};
Run Code Online (Sandbox Code Playgroud)
执行请求.发生导入错误时,您可以使用作业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;
}
Run Code Online (Sandbox Code Playgroud)
属性importjob.data包含一个XML文档,其中包含您要查找的详细信息.
它ImportSolutionRequest是同步执行的,很容易超时.但是可以安全地忽略超时,因为导入过程继续在后台运行.您可以通过定期检索导入作业记录来跟踪进度.只要属性importjob.completedon是null,作业仍在运行.
| 归档时间: |
|
| 查看次数: |
1492 次 |
| 最近记录: |