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

使用Microsoft Bot Framework(C#)开发聊天机器人遇参数异常:options不能为取消令牌

问题排查与解决:options cannot be a cancellation token

报错原因

你调用的BeginDialogAsync方法存在参数传参错误。该方法的标准重载签名为:

Task<DialogTurnResult> BeginDialogAsync(string dialogId, object options = null, CancellationToken cancellationToken = default);

你当前将cancellationToken直接传入了第二个参数位(该位置应为对话框初始化用的options参数),框架会把取消令牌误判为初始化选项对象,从而抛出options cannot be a cancellation token错误。

修正代码

如果无需给对话框传递初始化参数,只需将第二个参数设为null,把cancellationToken放在第三个参数位:

var dialogCtx = await dialogs.CreateContextAsync(turnContext, cancellationToken);
if (dialogCtx.ActiveDialog == null)
{
    await dialogCtx.BeginDialogAsync(MainDialog.Id, null, cancellationToken);
}

如果需要传递初始化参数(比如自定义配置数据),则先构造参数对象再传入:

// 示例:自定义初始化参数类
public class MainDialogOptions
{
    public string InitialPrompt { get; set; }
}

// 调用时传入参数
var dialogCtx = await dialogs.CreateContextAsync(turnContext, cancellationToken);
if (dialogCtx.ActiveDialog == null)
{
    var initialOptions = new MainDialogOptions { InitialPrompt = "欢迎使用对话机器人!" };
    await dialogCtx.BeginDialogAsync(MainDialog.Id, initialOptions, cancellationToken);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 20:46:04