Botframework 由于对象的当前状态,操作无效

Botframework 由于对象的当前状态,操作无效,botframework,Botframework,发生了一个错误。 由于对象的当前状态,操作无效。 System.InvalidOperationException异常 在 Microsoft.Bot.Builder.Dialogs.Conversation.c_uuuu31.b_uuuu0() 在 Microsoft.Bot.Builder.Dialogs.Internals.ReactiveDialogTask.d_u31.MoveNext() ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.Compil

发生了一个错误。 由于对象的当前状态,操作无效。 System.InvalidOperationException异常 在 Microsoft.Bot.Builder.Dialogs.Conversation.c_uuuu3
1.b_uuuu0()
在
Microsoft.Bot.Builder.Dialogs.Internals.ReactiveDialogTask.d_u3
1.MoveNext() ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 Microsoft.Bot.Builder.Dialogs.internal.ScoringDialogTask
1.d\u 3
1.MoveNext() ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 Microsoft.Bot.Builder.Dialogs.Internals.PersistentDialogTask.d_u3
1.MoveNext()
---来自引发异常的上一个位置的堆栈结束跟踪---在
Microsoft.Bot.Builder.Dialogs.Internals.PersistentDialogTask.d_u3
1.MoveNext() ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 Microsoft.Bot.Builder.Dialogs.Internals.SerializingDialogTask.d_u4
1.MoveNext()
---来自引发异常的上一个位置的堆栈结束跟踪---在
System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务
任务)在
System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务
任务)在
Microsoft.Bot.Builder.Dialogs.Internal.ExceptionTranslationDialogTask.d_u2
1.MoveNext() ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 Microsoft.Bot.Builder.Dialogs.Internal.LocalizedDialogTask.d_u2
1.MoveNext()
---来自引发异常的上一个位置的堆栈结束跟踪---在
System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务
任务)在
System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务
任务)在
Microsoft.Bot.Builder.Dialogs.internal.postenhandledExceptionToUserTask.d_u5
1.MoveNext() ---来自引发异常的上一个位置的堆栈结束跟踪---在 Microsoft.Bot.Builder.Dialogs.Internals.postenhandledExceptionToUserTask.d_u5
1.MoveNext()
---来自引发异常的上一个位置的堆栈结束跟踪---在
System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务
任务)在
System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务
任务)在
Microsoft.Bot.Builder.Dialogs.internal.LogPostToBot.d_u3
1.MoveNext() ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 Microsoft.Bot.Builder.Dialogs.Conversation.d_u5
1.MoveNext()
---来自引发异常的上一个位置的堆栈结束跟踪---在
System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务
任务)在
System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务
任务)在
Microsoft.Bot.Builder.Dialogs.Conversation.d_u3
1.MoveNext() ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在System.Runtime.CompilerServices.TaskAwaiter.GetResult()处 BotApplication.Controller.OAuthCallbackController.d_u0.MoveNext() 在里面 C:\BotApplication\BotApplication\Controllers\OAuthCallbackController.cs:line 55---异常发生的上一个位置的堆栈结束跟踪 投掷 System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 System.Threading.Tasks.TaskHelperExtensions.d_u3`1.MoveNext() ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 System.Web.Http.Controllers.ApiControllerActionInvoker.d_u0.MoveNext() ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 System.Web.Http.Controllers.ActionFilterResult.d_u2.MoveNext() ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 System.Web.Http.Dispatcher.HttpControllerDispatcher.d_u1.MoveNext()

当我尝试在用户身份验证后恢复对话时,就会发生这种情况

我这样称身份验证:

在我的第一个对话框中:

  var message = context.MakeMessage();
    await context.Forward(new SecondDialog(), HandleOptions, message, CancellationToken.None);
然后在我的第二个对话框中:

 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);
 var message = (Activity)context.Activity;