You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

带SSO的MS Teams Bot实例化对话状态时出现空引用异常

Teams Bot SSO认证后抛出空引用异常(Redis自定义状态存储)

环境与背景

  • 开发带Bot功能的Microsoft Teams应用,基于Azure AD实现SSO认证,使用Microsoft.Bot.Builder.Dialogs包
  • 对话状态存储在自定义Redis缓存存储中
  • 开发遵循官方SSO实现规范

问题现象

新用户首次访问应用时,授权流程正常触发并完成,但完成授权后立即抛出空引用异常:

at Microsoft.Bot.Builder.Dialogs.ComponentDialog.BuildDialogState(DialogInstance instance) 
at Microsoft.Bot.Builder.Dialogs.ComponentDialog.CreateInnerDc(DialogContext outerDc, DialogInstance instance) 
at Microsoft.Bot.Builder.Dialogs.DialogContext.<EmitEventAsync>d__41.MoveNext() 
at Microsoft.Bot.Builder.Dialogs.DialogExtensions.<InternalRunAsync>d__1.MoveNext() 
at Microsoft.Bot.Builder.Dialogs.DialogExtensions.<RunAsync>d__0.MoveNext() 
at Teams.ControliQDialogBotHandler1.<OnTeamsSigninVerifyStateAsync>d__9.MoveNext() in 

异常出现后等待几分钟,应用可自动恢复正常运行。

调试发现的关键线索

Redis中存储的对话状态JSON存在异常字段:

{"ConversationData":{"Workgroup":null,"WorkgroupId":1,"Client":"","ClientIdentifier":"","CiQToken":null},"DialogState":{"dialogStack":[{"id":"LoginDialog","state":{"dialogs":{"dialogStack":[{"id":"OAuthPrompt","state":{"options":null,"state":{"AttemptCount":0},"expires":"2023-03-06T12:50:49.9217743Z","caller":null},"StackIndex":null,"Version":null},{"id":"WaterfallDialog",
"state":{"options":null,"values":{},"instanceId":"5c228607-a25e-4f1c-9a05-a258db893548","stepIndex":0},
"StackIndex":null,"Version":null}]}},"StackIndex":null,"Version":"PxgdwT2kgHXD18MXymvuyNERYjF3CBfAF9T/cbvv8rY="}]}}

当前时间:2023-10-27T10:54:16.5463674Z,对话ID:3c16056b-3bf5-4f73-8dac-db853fa47957

核心异常点:

  • OAuthPrompt的expires时间为2023-03-06,远早于当前时间,属于过期状态
  • OAuthPrompt的options、StackIndex字段为null
  • WaterfallDialog的StackIndex字段为null

求解决方案

需要定位空引用异常的根本原因,并提供可落地的修复方案。

内容的提问来源于stack exchange,提问作者VSVIJAY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 05:16:28