Как воспроизвести или исправить исключение усечения строки в DCRM при вставке записи в сущность?

#c# #dynamics-crm

#c# #dynamics-crm

Вопрос:

При создании записи в сущности в онлайн-экземпляре DCRM с использованием метода веб-сервиса IOrganizationService.create() в коде c # мы получаем следующее исключение в рабочей среде, хотя длина данных в полях находится в пределах допустимого предела схемы DCRM..

Система.ServiceModel.FaultException`1[Microsoft.Xrm.Sdk.OrganizationServiceFault]: Строковые или двоичные данные будут усечены в таблице ‘{0}’, столбце ‘{1}. Усеченное значение: {2} Код ошибки: 0x80090429.

Если данные в полях длиннее допустимой длины поля схемы DCRM, я получаю исключение как StringLengthTooLong, но не исключение усечения.Кто-нибудь может помочь воспроизвести исключение усечения строки в DCRM?

Для создания записи в сущности используется следующий код::

общедоступное строковое хранилище неопубликованных данных (String EntityName,String messageName,String data,String listener,String failedInfo)

    {

       try

       {

           String failedInfo2 = String.IsNullOrWhiteSpace(failedInfo) ? "" : failedInfo;

           if (failedInfo2.Length > 4000)//in case it is too long

               failedInfo2 = failedInfo2.Substring(0, 4000);

           Entity LogEntity = new Entity();

           LogEntity.LogicalName = "unpublisheddata";

           LogEntity.Attributes.Add("id",Guid.NewGuid().ToString().Replace("-", ""));

           LogEntity.Attributes.Add("messageName",messageName);

           LogEntity.Attributes.Add("entityname",entityName);

           LogEntity.Attributes.Add("Listener", listener);

           LogEntity.Attributes.Add("Retries", 0);

           LogEntity.Attributes.Add("failedInfo",failedInfo2);

           LogEntity.Attributes.Add("data", data);

           m_ctx.OrganizationService.Create(LogEntity);

           return newId;

       }

       catch (Exception)

       {

           throw;

       }

   }
 

строка m_ctx.OrganizationService.Create(LogEntity) вызывает исключение.

Длина полей в DCRM:

Имя столбца Максимальная длина entityname 100 messagename 100 идентификатор 100 failed_info 4000 данные 102400 прослушиватель 10240

Ответ №1:

Две быстрые мысли по этому поводу…

  1. В процессе устранения вы должны быть в состоянии определить, какой атрибут вызывает проблему. Попробуйте прокомментировать каждый атрибут и посмотрите, когда ошибка исчезнет.
  2. Возможно, есть какая-то проблема с кодировкой Unicode? В качестве теста, возможно, попробуйте обрезать до гораздо failedInfo2 более короткой длины, например 1500.