Ошибка рабочего процесса CRM 2011 «Неверный указатель» - PullRequest
9 голосов
/ 13 февраля 2012

У меня есть собственный рабочий процесс в CRM 2011, который вручную запускается для записей пользовательских объектов.Когда для обработки выбирается одна запись, рабочий процесс всегда успешен.Однако при выборе более одной записи, по крайней мере, одна не удастся.Представленные ошибки, похоже, различаются от одной попытки к другой, даже если используются одни и те же данные.

Ошибки, с которыми я столкнулся до сих пор:

  • ValidateOpen- Обнаружен удаленный CrmDbConnection, когда его не следует удалять. Невозможно создать SqlExecutionContext из другого
  • SqlExecutionContext, для которого OnBeginRequest не был вызван

И после перезапуска сервера БД:

  • Неверный указатель

Все это происходит при вызове метода Update службы IOrganizationService.Ошибка Invalid Pointer, похоже, является наиболее распространенной ошибкой после перезапуска сервера БД (мне было предложено, что это может быть проблема с чрезмерно загруженным сервером БД).Я также удалил любое отставание асинхронных задач на случай, если это была проблема, но она не оказала никакого влияния.

Кто-нибудь знает, что означает эта ошибка, почему я могу ее получить или как могуобойти проблему?

Большое спасибо!

Ответы [ 2 ]

8 голосов
/ 25 мая 2012

Кажется, что это сообщение об ошибке является окольным способом сказать: «пытался открыть другое соединение с CRM, когда было открыто предыдущее», и причина , которую он пытается сделать, это оченьОтносится к тому факту, что происходит сбой только при обработке более одной записи.

Ссылка на этот блог:

Кажется, что когда рабочий процесс запускается для нескольких записей, он использует один и тот же экземпляр класса, это означает, что переменные уровня класса не будут повторно создаваться между выполнениями.Поэтому, когда последующие выполнения приходят к коду, который устанавливает переменную службы уровня класса для экземпляра IOrganisationService, он обнаруживает, что переменная уже имеет такую ​​переменную, и что она открыта.

Решение, которое я нашел проще всегореализовать его, чтобы иметь служебную переменную внутри функции Execute, а не на уровне класса.Это решило проблему везде, где я пробовал с тех пор.

0 голосов
/ 13 февраля 2012

Согласно кодам ошибок веб-службы CRM 2011 1002 * ...

InvalidPointer - объект расположен.

...