Невозможно отладить плагин Dynamics C# в инструменте регистрации плагинов

Фон

У меня есть локальный плагин C# в Dynamics 2016, который использует библиотеку для звонков в другие системы. Часть этой библиотеки - это вызов динамики с использованием веб-API. Плагин предпринимает действия, поскольку я вижу изменения в динамике, однако я ожидаю, что он предпримет другое действие, чем он. Когда я пытаюсь отладить плагин с помощью инструмента регистрации плагинов, у меня возникают некоторые проблемы. Когда я профилирую плагин, используя метод Exception, я получаю файл исключения, который я могу отладить до определенной точки. Когда я добираюсь до приведенного ниже кода, инструмент регистрации плагинов аварийно завершает работу без сообщения об ошибке. Когда я выполняю отладку с помощью метода Persist to Entity, мой плагин работает успешно, но в инструменте регистрации плагинов не зарегистрированы профили. Мой плагин запускается из действия, которое запускается из рабочего процесса, который присоединен к завершению потока бизнес-процесса (это основано на этой статье). Мой начальный вопрос здесь, который привел к этому вопросу. Любые мысли о том, чтобы заставить отладчик работать с моим кодом?

Код

HttpClient client = new HttpClient(new HttpClientHandler() { Credentials = new NetworkCredential("admin", "password", "DOMAIN") });
client.BaseAddress = new Uri(Helpers.GetSystemUrl(COHEN.APIConnector.Application.Dynamics));
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("OData-MaxVersion", "4.0");
client.DefaultRequestHeaders.Add("OData-Version", "4.0");
HttpResponseMessage responseMessage;
string url = "ccseq_clients";

responseMessage = client.GetAsync(url).Result;

1 ответ

Решение

Я помню эту проблему, когда я отлаживал онлайн-вызовы REST API SharePoint, она всегда вылетала. Затем я добавил службу трассировки и зарегистрированные контрольные точки для проверки пути выполнения кода. Вместо отладки я буду загружать журнал трассировки Profiler и воспроизводить его в PRT, чтобы увидеть ветвь успеха или неудачи.

Когда вы настраиваете трассировку плагина для входа All в настройках системы, это режим Dev и будет очень полезен.

            ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));

            try
            {
                tracingService.Trace("Attempting to obtain Phone value...");
                phone = account["telephone1"].ToString();

            }

            catch(Exception error)
            {
                tracingService.Trace("Failed to obtain Phone field. Error Details: " + error.ToString());
                throw new InvalidPluginExecutionException("A problem has occurred. Please press OK to continue using the application.");

            }

Ссылка

В твоем случае:

            if(responseMessage != null)
            {

                tracingService.Trace("API call success & got responseMessage.");

            }
            else
            {

                tracingService.Trace("responseMessage was empty.");

            }
Другие вопросы по тегам