Почему в приложении ASP.NET есть StackOverFlowException с ConfigUreaWait (false), но не с ConfigureAwait (true)?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Почему в приложении ASP.NET есть StackOverFlowException с ConfigUreaWait (false), но не с ConfigureAwait (true)?

Сообщение Anonymous »

У меня есть приложение ASP.NET, работающее на .NET 4.8. Я получаю StackOverflowException . У меня есть метод действия, который вызывает другой метод CallbackMethod , где использование ConfigureAwait (false) в операторе, которое запускает исключение переполнения стека. Но исключение переполнения стека происходит где -то после завершения задачи, которая влияет на это поведение. < /P>

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

public static async Task CallBackMethod(HttpRequestMessage request, string entityId, Func getEntity, Func action, string actionId) where T : Meta
{
// Changing to ConfigureAwait(true) ensures no Stackoverflow exception
request.Properties[Before] = await getEntity.Invoke(entityId).ConfigureAwait(false);
request.Properties[Target] = typeof(T).Name;
// Custom Exception is thrown from action.Invoke()
await action.Invoke().ConfigureAwait(false);
request.Properties[After] = (Func)(async () => await getEntity.Invoke(entityId).ConfigureAwait(false));
request.Properties[ActionId] = actionId;
}
Для конкретного сценария, вложенный метод, глубокий в этом действии. INVOKE Вызов в строке 3 бросает пользовательское исключение, которое ожидается. Но когда это произойдет, мое приложение выбрасывает исключение стека и выходит.

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

request.Properties[Before] = await getEntity.Invoke(entityId).ConfigureAwait(true)
< /code>
Тогда исключение переполнения стека не брошено. Только ожидаемое пользовательское исключение брошено и обрабатывается. брошен. Я хотел понять, что меняется между configureawait (false) 
и true, что исключение переполнения стека не выбрасывается.
https://github.com/riteshksriv/testso

Подробнее здесь: https://stackoverflow.com/questions/794 ... -asp-net-a
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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