添加Cosmos DB后Bot模拟器提示Microsoft App ID/密码错误
Bot Framework Cosmos DB配置后模拟器身份验证错误问题
版本
4.14.1
问题描述
按照微软官方教程操作时,内存Bot在模拟器中运行正常;但添加Cosmos DB存储配置后,代码能正常启动运行,模拟器却弹出错误提示:{ "message": "The bot's Microsoft App ID or Microsoft App Password is incorrect.", "status": 400 }
且appsettings.json中的Microsoft App ID和密码与模拟器输入的内容完全一致。
重现步骤
- 按照教程配置Bot接入Cosmos DB并启动进程;
- 启动Bot模拟器,输入Bot的访问URL,以及与appsettings.json匹配的Microsoft App ID和密码;
- 触发上述身份验证错误。
预期行为
模拟器能够成功连接Bot进程,正常进行交互。
错误截图

解决方法
1. 检查身份验证服务注册逻辑
配置Cosmos DB时可能意外干扰了Bot的身份验证中间件,需确保在Startup.cs或Program.cs中,身份验证配置未被覆盖:
services.AddBot<YourBot>(options => { // 确保凭证提供者正确读取配置文件中的值 options.CredentialProvider = new SimpleCredentialProvider( Configuration["MicrosoftAppId"], Configuration["MicrosoftAppPassword"]); // Cosmos DB相关配置代码放在此处,不要覆盖CredentialProvider var cosmosDbOptions = new CosmosDbStorageOptions { CosmosDbEndpoint = Configuration["CosmosDb:Endpoint"], AuthKey = Configuration["CosmosDb:AuthKey"], DatabaseId = Configuration["CosmosDb:DatabaseId"], ContainerId = Configuration["CosmosDb:ContainerId"] }; options.State.Add(new CosmosDbStorage(cosmosDbOptions)); });
2. 清除Bot模拟器缓存
模拟器可能缓存了旧的身份验证信息,导致输入正确仍报错:
- 关闭模拟器;
- 删除缓存目录:Windows路径为
%appdata%\BotFrameworkEmulator,Mac路径为~/Library/Application Support/BotFrameworkEmulator; - 重启模拟器后重新输入连接信息。
3. 验证配置文件格式
检查appsettings.json中MicrosoftAppId和MicrosoftAppPassword的格式,确保无多余空格、引号错误:
{ "MicrosoftAppId": "你的AppID", "MicrosoftAppPassword": "你的密码", "CosmosDb": { "Endpoint": "Cosmos DB地址", "AuthKey": "访问密钥", "DatabaseId": "数据库ID", "ContainerId": "容器ID" } }
4. 临时禁用身份验证排查
本地调试时可临时禁用身份验证,确认问题是否出在身份验证环节:
options.CredentialProvider = new NullCredentialProvider();
若此时模拟器能正常连接,说明身份验证配置的读取或传递存在问题,再针对性排查。
内容的提问来源于stack exchange,提问作者Hemant Tiwari
相关产品推荐
相关产品推荐

