Этот код работает при вызове on- предварительная установка Dynamics v9.1, но при использовании того же кода для вызова Dynamics365 в облаке я получаю «неавторизованный». Я предполагаю, что что-то не работает с облачной версией Dynamics, но я не могу понять, как это исправить, поэтому надеюсь на ваши предложения, ребята.
Сейчас я запускаю код локально для разработки, поэтому выдаю себя за себя и являюсь системным администратором как локально, так и в облаке.
Код (где метод Get() является отправной точкой и вызывается ранее в моем приложение):
Код: Выделить всё
protected virtual async Task Get()
{
var handler = new HttpClientHandler { UseDefaultCredentials = true };
// The guid is a system administrator
return await WindowsIdentity.RunImpersonated(_user.AccessToken, () =>
GetAsync("https://myorganizationname.crm4.dynamics.com/api/data/v9.2/",
"systemusers(E8F2BDBD-540C-EF11-9F89-000D3A4C32E3)", handler));
}
private async Task GetAsync(string baseUrl, string url, H (ttpClientHandler handler)
{
using (var client = new HttpClient(handler))
{
client.BaseAddress = new Uri(baseUrl);
client.DefaultRequestHeaders.Add("Accept", "application/json");
try
{
var request = new HttpRequestMessage(HttpMethod.Get, url);
var response = await client.SendAsync(request);
var json = await response.Content.ReadAsStringAsync();
if (!response.IsSuccessStatusCode)
{
if (response.GetType() == typeof(HttpResponseMessage))
{
throw new Exception(response.ReasonPhrase); // I always get "Unauthorized" as ReasonPhrase...
}
throw new Exception(json);
}
return json;
}
catch (System.Net.WebException ex)
{
// Just some error handling...
}
}
}
Что я могу сделать, чтобы он успешно вызывал облачный экземпляр?
Подробнее здесь: https://stackoverflow.com/questions/792 ... lling-user