Невозможно отладить плагин 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.");
}