#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:
Две быстрые мысли по этому поводу…
- В процессе устранения вы должны быть в состоянии определить, какой атрибут вызывает проблему. Попробуйте прокомментировать каждый атрибут и посмотрите, когда ошибка исчезнет.
- Возможно, есть какая-то проблема с кодировкой Unicode? В качестве теста, возможно, попробуйте обрезать до гораздо
failedInfo2
более короткой длины, например 1500.