【问题标题】:More details about CRM error : "Solution manifest import: FAILURE"有关 CRM 错误的更多详细信息:“解决方案清单导入:失败”
【发布时间】:2015-09-09 10:18:36
【问题描述】:

我正在使用 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);
}

感谢您的回答!

【问题讨论】:

    标签: c# import dynamics-crm-2011 crm


    【解决方案1】:

    Dynamics 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
    };
    

    执行请求。发生导入错误时,您可以使用作业 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.completedonnull,作业仍在运行。

    【讨论】:

    • 使用 CRM 2011 解决方案只能同步导入,从 CRM 2013 开始也可以异步导入。您的代码是同步的。
    • 你是对的。我从去年为 CRM 2011 创建的工具中获得了此代码。最终ImportSolutionRequest 超时,但可以忽略此异常,并且仍然可以通过定期检索导入作业来监控进度。我会更新我的答案。
    • 感谢您的回答!我已经使用jobId来显示进度条,但是我没有关注包含更好错误消息的xml数据。
    猜你喜欢
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-31
    相关资源
    最近更新 更多