Произошла ошибка. Операция недействительна из-за текущего состояния объекта. System.InvalidOperationException at Microsoft.Bot.Builder.Dialogs.Conversation. <> c__3
1.<ResumeAsync>b__3_0() at Microsoft.Bot.Builder.Dialogs.Internals.ReactiveDialogTask.<Microsoft-Bot-Builder-Dialogs-Internals-IPostToBot-PostAsync>d__3
1.MoveNext() --- Конец трассировки стека из предыдущего места, где было брошено исключение --- на System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Task задач) в System.Runtime.CompilerServices .TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task задача) в Microsoft.Bot.Builder.Dialogs.Internals.ScoringDialogTask1.<Microsoft-Bot-Builder-Dialogs-Internals-IPostToBot-PostAsync>d__3
1.MoveNext() --- Конец трассировки стека из предыдущего места, где было брошено исключение --- в системе. Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача ) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача задача) в Microsoft.Bot.Builder.Dialogs.Internals.PersistentDialogTask.d__31.MoveNext() --- End of stack trace from previous location where exception was thrown --- at Microsoft.Bot.Builder.Dialogs.Internals.PersistentDialogTask.<Microsoft-Bot-Builder-Dialogs-Internals-IPostToBot-PostAsync>d__3
1.MoveNext() --- Конец трассировки стека из предыдущего места, где было брошено исключение --- на System.Runtime.CompilerServices. TaskAwaiter.ThrowForNonSuccess (Task задача) на System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task задача) в Microsoft.Bot.Builder.Dialogs.Internals.SerializingDialogTask.d__41.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.Bot.Builder.Dialogs.Internals.ExceptionTranslationDialogTask.<Microsoft-Bot-Builder-Dialogs-Internals-IPostToBot-PostAsync>d__2
1.MoveNext() --- Конец трассировки стека из предыдущего места, где было выбрано исключение - на System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Задача задача) на System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Целевая задача ) при Microsoft.Bot.Builder.Dialogs.Internals.LocalizedDialogTask.d__21.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.Bot.Builder.Dialogs.Internals.PostUnhandledExceptionToUserTask.<Microsoft-Bot-Builder-Dialogs-Internals-IPostToBot-PostAsync>d__5
1.MoveNext() --- Конец трассировки стека из предыдущего места, где исключение было брошен --- на Microsoft.Bot.Builder.Dialogs.Internals.PostUnhandledExceptionToUserTask.d__51.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.Bot.Builder.Dialogs.Internals.LogPostToBot.<Microsoft-Bot-Builder-Dialogs-Internals-IPostToBot-PostAsync>d__3
1.MoveNext() --- Конец трассировки стека из предыдущего места, где было выбрано исключение --- на System.Runtime.CompilerServices .TaskAwaiter.ThrowForNonSuccess (Задача task) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача задача) в Microsoft.Bot .Builder.Dialogs.Conversation.d__51.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.Bot.Builder.Dialogs.Conversation.<ResumeAsync>d__3
1.MoveNext() --- Конец трассировки стека из предыдущего места, где было брошено исключение --- на System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Task задач) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task задача) в System.Runtime.CompilerServices.TaskAwaiter.GetResult() в BotApplication.Controllers.OAuthCallbackController.d__0.MoveNext() в C: \ BotApplication \ BotApplication \ Контроллеры \ OAuthCallbackController.cs: строка 55 --- Конец трассировки стека из предыдущего местоположения, где исключение было thrown --- at System.Runtime.CompilerServices.T askAwaiter.ThrowForNonSuccess (Целевая задача ) при System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача задачи) при System.Threading.Tasks.TaskHelpersExtensions.d__3`1.MoveNext() --- Конец трассировки стека из предыдущего места, где был брошен исключение --- на System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Task задач) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task задача) в System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext() --- Конец трассировки стека из предыдущего места, где был брошен исключение --- на System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Задача задача) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача задача) в System.Web.Http.Controll ers.ActionFilterResult.d__2.MoveNext() --- Конец трассировки стека из предыдущего места, где был брошен исключение --- на System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Task задач) в System.Runtime.CompilerServices .TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task задача) на System.Web.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext() Операция не действительна в связи с текущим состоянием объекта
Это происходит, когда я пытаюсь возобновить разговор после аутентификации пользователя.
Я называю проверку подлинности таким образом:
В моем первом диалоге:
var message = context.MakeMessage();
await context.Forward(new SecondDialog(), HandleOptions, message, CancellationToken.None);
Тогда в моем SecondDialog есть это:
var message = await argument;
MyStaticModel.toId = message.From.Id;
MyStaticModel.toName = message.From.Name;
MyStaticModel.fromId = message.Recipient.Id;
MyStaticModel.fromName = message.Recipient.Name;
MyStaticModel.serviceUrl = message.ServiceUrl;
MyStaticModel.channelId = message.ChannelId;
MyStaticModel.conversationId = message.Conversation.Id;
await context.Forward(new SimpleFacebookAuthDialog(message), ResumeAfterLogIn, message, CancellationToken.None);
В моей Facebook Диалог я сделать возобновление куки таким образом :
public SimpleFacebookAuthDialog(IMessageActivity msg)
{
ResumptionCookie = new ResumptionCookie(msg);
}
И когда пользователь Аутентифицировать я обрабатывать аутентификации:
public async Task<HttpResponseMessage> OAuthCallback([FromUri] string userId, [FromUri] string botId, [FromUri] string conversationId, [FromUri] string channelId, [FromUri] string serviceUrl, [FromUri] string locale, [FromUri] string code, [FromUri] string state, CancellationToken token)
{
//Get the resumption cookie
Address address = new Address
(
// purposefully using named arguments because these all have the same type
botId: FacebookHelpers.TokenDecoder(botId),
channelId: channelId,
userId: FacebookHelpers.TokenDecoder(userId),
conversationId: FacebookHelpers.TokenDecoder(conversationId),
serviceUrl: FacebookHelpers.TokenDecoder(serviceUrl)
);
//var resumptionCookie = new ResumptionCookie(FacebookHelpers.TokenDecoder(userId), FacebookHelpers.TokenDecoder(botId), FacebookHelpers.TokenDecoder(conversationId), channelId, FacebookHelpers.TokenDecoder(serviceUrl), locale: locale);
var resumptionCookie = new ResumptionCookie(address, userName: null, isGroup: false, locale: locale);
// Exchange the Facebook Auth code with Access token
var accessToken = await FacebookHelpers.ExchangeCodeForAccessToken(resumptionCookie, code, SimpleFacebookAuthDialog.FacebookOauthCallback.ToString());
// Create the message that is send to conversation to resume the login flow
var msg = resumptionCookie.GetMessage();
msg.Text = $"token:{accessToken.AccessToken}";
// Resume the conversation to SimpleFacebookAuthDialog
await Conversation.ResumeAsync(resumptionCookie, msg, CancellationToken.None);
Он падает на последней строке кода. При возобновлении разговора.
Любая помощь?