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

迁移新版QnAMaker后遇授权参数缺失错误的技术求助

解决QnAMaker迁移后「Valid KnowledgeBaseId and SubscriptionKey not provided」错误

看起来你在迁移到新版QnAMaker后踩了版本兼容和参数配置的坑,结合你的代码和依赖版本,我整理了几个核心问题点和解决办法:

1. 依赖版本不兼容,第三方QnADialog库过时

你目前用的QNADialog:1.2.0是第三方库,而官方的QnAMaker集成已经整合到Microsoft.Bot.Builder.CognitiveServices包中。同时你的Microsoft.Bot.Builder.CognitiveServices.1.1.7版本过低,和Bot Builder 3.15.2.2不匹配,无法支持新版QnAMaker的认证机制。

解决步骤:

  • 卸载第三方QnADialog包,改用官方的Microsoft.Bot.Builder.CognitiveServices包,升级到和Bot Builder一致的版本(3.15.2.2):
    Uninstall-Package QnADialog
    Update-Package Microsoft.Bot.Builder.CognitiveServices -Version 3.15.2.2
    
  • 代码中替换命名空间,去掉using QnAMakerDialog;,改用官方命名空间:
    using Microsoft.Bot.Builder.CognitiveServices.QnAMaker;
    

2. QnAMaker属性参数名称错误

新版QnAMaker已经不再使用authKey,而是用endpointKey(你可以在QnAMaker门户的「Settings」页面找到这个密钥)。旧版本的属性参数名和新版服务不匹配,导致系统无法识别你的密钥配置。

修正你的QnADialog属性:
把原来的[QnAMaker]属性替换为官方的[QnAMakerService]属性(或者使用构造函数注入配置,更灵活):

[Serializable]
[QnAMakerService(
    knowledgebaseId: "f81ce668-XXXX-XXXX-XXXX-ad20c5f4d3fa",
    endpointKey: "013ffd97-XXXX-XXXX-981f-ea298085591c",
    host: "https://XXXX.azurewebsites.net/qnamaker"
)]
public class QnADialog : QnAMakerDialog
{
    // 你的对话框逻辑保持不变,注意继承的是官方的QnAMakerDialog,而非第三方的QnAMakerDialog<object>
}

3. 确认EndpointHostName格式正确性

新版QnAMaker的host地址格式应为https://<your-resource-name>.azurewebsites.net/qnamaker,确保你填写的地址和QnAMaker门户发布页面显示的「Postman示例」中的地址完全一致,不要遗漏路径后缀。

额外检查点

  • 确认你使用的endpointKey是QnAMaker门户中的「Endpoint key」,而非Azure资源的「Subscription Key」,两者是不同的密钥。
  • 检查代码中是否有其他地方覆盖了QnAMaker的配置,比如在全局设置或对话框构造函数中重复设置参数导致冲突。

按照以上步骤调整后,应该就能解决参数不识别的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:24:55