#c# #plugins #dynamics-365 #methodaccessexception
#c# #Плагины #dynamics-365 #исключение methodaccessexception
Вопрос:
Итак, я написал плагин в preLeadUpdate, который вызывает dynamics webapi. При запуске модульных тестов, например, в среде разработки из Visual Studio, он работает нормально, но при развертывании плагина в экземпляре dev-dynamics я получаю следующую ошибку при его выполнении:
Система.Исключение MethodAccessException: попытка с помощью метода ‘System.Net.Http.HttpClientHandler.Dispose(логическое значение) ‘ для доступа к методу’System.Net.ServicePointManager.CloseConnectionGroups(System.Строка)’ сбой
В трассировке стека я вижу, что он завершается с ошибкой при выполнении строки «var response = AuthClient.PostAsync(url, ….)» в следующем методе:
using (HttpClient authClient = new HttpClient())
{
AzureTokenResponse token;
string url = "https://login.microsoftonline.com/" tenantId "/oauth2/token";
var response = authClient.PostAsync(url,
new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("resource", resource),
new KeyValuePair<string, string>("client_id", clientId),
new KeyValuePair<string, string>("client_secret", secret),
new KeyValuePair<string, string>("grant_type", "client_credentials")
})).Resu<
if (response.IsSuccessStatusCode)
{
var result = response.Content.ReadAsStringAsync();
token = JsonConvert.DeserializeObject<AzureTokenResponse>(result.Result);
}
else
{
throw new Exception("Could not get token for Azure");
}
return token;
}
После некоторого поиска в Google ошибки я почти чувствую, что есть какая-то ссылка на dll, которая не является частью pluginassembly, но вместо этого, возможно, ссылается из GAC на dev-webserver. И, возможно, эта dll имеет более старую версию на сервере, где какой-либо метод недоступен (возможно, не объявлен как «общедоступный»)
Я убедился, что все ссылки на System.Net.Http имеют значение «копировать local = true», но это, похоже, не помогает.
Итак, я немного отчаиваюсь и открыт для предложений.
Комментарии:
1. Просто чтобы я понял проблему, вы написали плагин dynamics для извлечения данных из одного и того же экземпляра dynamics? почему вы не можете просто выполнить запрос из плагина вместо этого? также не могли бы вы, пожалуйста, предоставить более подробную информацию, такую как ваш фреймворк, версия api dynamics и точная ошибка.
2. Код извлекает маркетинговые данные, которые, согласно моим исследованиям, недоступны как «сущность», но, тем не менее, они доступны через вызов WebAPI. Самое странное, что я даже не могу получить токен, но когда я делаю то же самое в другом экземпляре Dynamics, той же версии (онлайн, v.9.1), проблем нет.. Так что это почти похоже на то, что в этой среде что-то есть..
3. приношу извинения за поздний ответ. пожалуйста, не могли бы вы поделиться объектом, к которому вы хотите получить доступ. это может не соответствовать заданному вами вопросу, но если вы столкнулись с объектом, который не доступен через sdk, скорее всего, то, чего вы пытаетесь достичь, не поддерживается и, следовательно, не может быть выполнено, даже если у вас есть решение вышеуказанной проблемы.