Исключение тайм-аута API Microsoft GraphC#

Место общения программистов C#
Ответить
Anonymous
 Исключение тайм-аута API Microsoft Graph

Сообщение Anonymous »

Я использую библиотеку Microsoft Graph API (C#) и мне интересно, сталкивался ли кто-нибудь с этим:

Многие из моих вызовов Graph API время от времени истекают.

Это может произойти с любым вызовом API: от получения текущего профиля пользователя до получения документов SharePoint и т. д.
Я пробовал обновить Microsoft Graph API и зависимые пакеты Nuget до последних версий, но это не помогает. .

Для уточнения: это приложение представляет собой консольное приложение Windows. На стороне Azure оно зарегистрировано как собственное приложение. В качестве тестового приложения это однопоточное приложение. Никакого параллелизма, участвуют условия гонки. Логика кода так же проста, как

  • Вход пользователя в систему.
  • Программа делает вызов Graph API (показан на примере 1) для получения профиля пользователя и время ожидания этого вызова API.
eg 1.


eg 1.


eg р>

Код: Выделить всё

var currentUser = graphClient.Me.Request().GetAsync().Result;
например, 2.

Код: Выделить всё

var site = _graphClient.Sites[SharePointSiteId].Request().GetAsync().Result;
Симптом: через минуту или две выдается исключение AggregationException (из-за TPL), которое включает исключение TimeOutException.

Нет несанкционированного исключения.

Я хочу знать, в чем может быть возможная причина и как этого избежать.



ОБНОВЛЕНИЕ:
Вот снимок экрана, когда происходит исключение.
[img]https:/ /i.sstatic.net/pnJKL.png[/img]




ОБНОВЛЕНИЕ 2:
Я попробовал заменить все вызовы API на непосредственное использование «await», чтобы дождаться результатов. потому что этот пример кода представляет собой консольное приложение. Я ставлю

Код: Выделить всё

static void Main(string[] args)
{
// using Stephen Cleary's nuget package: Nito.AsyncEx.Tasks
MainImp().WaitAndUnwrapException();
}

static async Task MainImp()
{
// ...
// Graph API calls
Это исключение по-прежнему генерируется из этого простого вызова API:

Код: Выделить всё

var currentUser = await graphClient.Me.Request().GetAsync();
В mscorlib.dll произошло необработанное исключение типа «Microsoft.Graph.ServiceException».
Дополнительная информация: Код: тайм-аут

Вот полный стек вызовов


в Microsoft.Graph.HttpProvider.d__19.MoveNext()
--- Конец трассировки стека из предыдущего места, где было создано исключение --- в
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task
Task) в
System.Runtime.CompilerServices. TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
Task) в Microsoft.Graph.HttpProvider.d__18.MoveNext()
--- Конец трассировки стека из предыдущего места, где было создано исключение --- в
Система .Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task
задача) в
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
задача) в
Microsoft.Graph.BaseRequest.d__35 .MoveNext()
--- Конец трассировки стека из предыдущего места, где было создано исключение --- at
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task
Task) at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
задача) в Microsoft.Graph.BaseRequest.d__31

Код: Выделить всё

1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---    at
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task
task)    at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
task)    at Microsoft.Graph.UserRequest.d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---    at
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task
task)    at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
task)    at System.Runtime.CompilerServices.TaskAwaiter
1.GetResult()
в SharePointConsoleApp.Program.d__14.MoveNext() в
D:\TestProjects\SharePointConsoleApp\Program.cs:line 133
--- Конец трассировка стека из предыдущего места, где было создано исключение --- в
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task
Task) в
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task)
задача) в
Nito.AsyncEx.Synchronous.TaskExtensions.WaitAndUnwrapException(Task
задача) в SharePointConsoleApp.Program.Main(String[] args) в
D:\TestProjects\ SharePointConsoleApp\Program.cs:строка 50 в
System.AppDomain._nExecuteAssembly(RuntimeAssembly сборки, String[]
args) в System.AppDomain.ExecuteAssembly(String AssemblyFile,
Evidence AssemblySecurity, String[ ] args) в
Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()

в System.Threading.ThreadHelper.ThreadStart_Context(состояние объекта)

в System. Threading.ExecutionContext.RunInternal(ExecutionContext
ExecutionContext, Обратный вызов ContextCallback, Состояние объекта, Boolean
saveSyncCtx) at
System.Threading.ExecutionContext.Run(ExecutionContext
ExecutionContext, Обратный вызов ContextCallback, Object состояние, логическое значение
saveSyncCtx) в
System.Threading.ExecutionContext.Run(ExecutionContext
ExecutionContext, обратный вызов ContextCallback, состояние объекта) в
System.Threading.ThreadHelper.ThreadStart()< /p>


Подробнее здесь: https://stackoverflow.com/questions/564 ... -exception
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»