提问人:Neerajyadav Kumar 提问时间:6/27/2022 最后编辑:Lance U. MatthewsNeerajyadav Kumar 更新时间:6/28/2022 访问量:373
对象引用未设置为 Teams 频道中对象的实例
Object reference not set to an instance of an object in Teams Channel
问:
它在 Bot 框架模拟器中完美运行,但在这一点上在 Teams 中显示错误
if(Dialog != null)
{
await Dialog.RunAsync( turnContext, ConversationState.CreateProperty<DialogState>("DialogState"), cancellationToken);
//Logger.LogInformation("Running dialog with Message Activity.");
}
代码如下:
protected override async Task OnMessageActivityAsync(
ITurnContext<IMessageActivity> turnContext,
CancellationToken cancellationToken)
{
// Run the Dialog with the new message Activity.
if (Dialog == null)
throw new ArgumentNullException("Dialog is null");
if (ConversationState == null)
throw new ArgumentNullException("ConversationState is null");
if (cancellationToken == null)
throw new ArgumentNullException("cancellationToken is null");
if (turnContext == null)
throw new ArgumentNullException("turnContext is null");
if(Dialog != null)
{
//error
await Dialog.RunAsync(
turnContext,
ConversationState.CreateProperty<DialogState>("DialogState"),
cancellationToken);
//Logger.LogInformation("Running dialog with Message Activity.");
}
}
答:
0赞
AP01
6/28/2022
#1
此异常意味着某些内容为 null。该调用中似乎至少有一个变量(假设您的第一个代码块是发生异常的位置)为 null。可以尝试使用 ngrok 进行本地调试,以通过本地调试器运行机器人,但通过 Teams 与其交互。
可以单步执行并观看机器人执行从 Teams 发送的命令。跟踪执行直到发生异常,并检查哪个变量为 null。知道哪个变量为 null 后,就可以修复错误。
(顺便说一句,为对话框提供更具描述性的名称可能会有所帮助,而不仅仅是Dialog
)
评论
1赞
Lance U. Matthews
6/28/2022
如果无法给出比“某物为空”更具体的答案(而且由于问题中缺乏信息,我不相信可以),那么这就是标记为关于该问题的规范问题的重复项的地方,因为这些答案涵盖了所有这些问题。
评论
string
ArgumentNullException
throw new ArgumentNullException("turnContext");
throw new ArgumentNullException(nameof(turnContext));
Dialog
ConversationState
throw
InvalidOperationException
Exception