Клиентская компания только что обновилась до 2016 года с 2011 года. Я тестировал плагины, чтобы убедиться, что они все еще работают, и я наконец (после большого разочарования) выяснил, что происходит, но не знаю, почему или как решитьthis.
У меня есть несколько плагинов, и все они работают точно так, как ожидается - до тех пор, пока обновления данных не будут проходить через формы.
Позвольте мне объяснить:
У меня есть плагины (синхронные), которые запускаются при изменении поля.Если поле изменяется с помощью рабочего процесса или другого кодированного процесса, все работает просто отлично.
Но когда я обновляю поле в форме, оно само.Это терпит неудачу с очень общей ошибкой (ниже).
Я поддерживаю пару других клиентов уже в 2016 году, и у меня нет такой же проблемы.Так что я даже не знаю, с чего начать.Последние несколько дней я сходил с ума, чтобы проверить код.Но это происходит только при обновлении поля в форме.Любой другой метод обновления данных, которые я протестировал, работает без ошибок.
У меня тоже есть другая проблема.Когда поле обновляется (через тестовый рабочий процесс), оно запускается и обновляет дочернюю запись.Дочерняя запись затем имеет рабочий процесс, который запускается для деактивации записи.Рабочий процесс говорит, что запустил и деактивировал запись, но никогда не деактивирует).
В любом случае.если кто-либо имеет хоть какую-то идею о том, что может быть причиной этого.Я хотел бы услышать это.Я в своем уме на этом.
Заранее спасибо.
Я протестировал код и успешно запустил его, пока я не обновляю поле через форму.Чтобы проверить это, я создал несколько тестовых рабочих процессов, которые обновляют данные, они успешно запускаются и плагины запускаются без проблем.
EntityReference contact =
(EntityReference)preImageEntity.Attributes["ipmahr_contact"];
QueryExpression cn = new QueryExpression("ipmahr_recertification");
cn.ColumnSet = new ColumnSet("ipmahr_contact", "statecode");
cn.Criteria.AddCondition("ipmahr_contact", ConditionOperator.Equal,
contact.Id);
cn.Criteria.AddCondition("statecode", ConditionOperator.Equal, 0);
EntityCollection results1 = server.RetrieveMultiple(cn);
if (results1.Entities.Count > 0)
foreach (Entity a in results1.Entities)
{
a.Attributes["ipmahr_deactivaterecertificationrecord"] = true;
server.Update(a);
}
В большинстве случаев код довольно прост и работает нормально, если в форме ничего не обновляется.
Вот ошибка: Exception: System.ServiceModel.FaultException`1 [Microsoft.Xrm.Sdk.OrganizationServiceFault]: System.ServiceModel.CommunicationObjectFaptedException: # 595EB751 (Сведения о сбое равны Microsoft.Xrm.Sdk.OrganizationServiceFault)., Id корреляции: fd846-cd767Инициирующий пользователь: 274d55dc-3f4d-e811-b30f-0050569142af Выход из повторных подтверждений.Main.DeactivateUsedRecertificationsonEndDateChange.Execute (), идентификатор корреляции: fd1a79ca-c846-407b-b578-ac92056-f2-ef0406d6506d6506d6406d6*
Новая информация.Я обнаружил, что не все плагины, которые я написал, имеют проблемы на этом сервере.Это хорошо.Но я также обнаружил, что есть общие черты для тех плагинов, которые не работают.
Любой плагин, использующий выражение запроса, завершается с общей ошибкой.Добавление надежной проверки ошибок ничего не показало (как только проверка ошибок была добавлена, она просто ничего не запускала и не вырабатывала ошибок в журналах).Журналы трассировки также не показали ничего существенного.
Так что теперь мне интересно, есть ли что-то в том, как форматируется выражение запроса, или есть ли проблема с SQL.Я упоминаю SQL, потому что утром обнаружил, что если я создаю поля слишком быстро, я получаю общую ошибку SQL.Подождите минуту, и я могу создать новые поля без проблем.