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

Bot Framework应用服务DirectLine API生成令牌失效问题咨询

C# Bot 接入 DirectLine WebChat 问题排查指引

一、自定义 /directline/token 端点无响应排查

  • 核对路由匹配规则:当前正式版 .NET Bot DirectLine 扩展的默认令牌生成接口路径为 /.bot/v3/directline/tokens/generate,GitHub 仓库中部分旧示例使用的 /directline/token 路径仅适配早期预览版扩展,和正式版路由规则不匹配,可先在 Postman 中携带相同 Bearer 认证头调用默认路径,验证是否能正常返回令牌。
  • 检查应用配置正确性:确认 App Service 配置项中已添加 DirectLineExtensionKey,值为 Azure Bot 通道面板中获取的 DirectLine 密钥,无多余空格、换行或转义字符。
  • 排查请求拦截规则:如果开启了 App Service 内置身份验证(Easy Auth)、WAF 或IP访问限制,需要将 /.bot/* 路径加入匿名访问白名单,避免请求在到达DirectLine扩展逻辑前被拦截,返回空响应或401/403错误。
  • 拉取服务端运行日志:在App Service日志流中定位请求对应时间点的报错记录,重点排查程序集加载失败、路由匹配失败、密钥校验失败类异常。

二、令牌生成后WebChat无法连接Bot排查

  • 匹配令牌对应的服务端点:通过Postman调用全局DirectLine服务生成的令牌,仅适配公网DirectLine服务;如果使用部署在自身App Service上的DirectLine扩展,WebChat初始化时必须手动指定domain参数为自托管扩展地址,否则会默认请求公网DirectLine服务,出现令牌不匹配、连接失败问题。
  • 校验WebChat初始化代码:确保传入的令牌无URL编码、多余引号或转义字符,基础初始化参考如下:
// 对接自托管DirectLine扩展的初始化示例
const directLine = window.WebChat.createDirectLine({
  token: '实际获取到的有效令牌字符串',
  domain: 'https://myappservicename.azurewebsites.net/.bot/v3/directline'
})
window.WebChat.renderWebChat(
  { directLine: directLine },
  document.getElementById('webchat-container')
);
  • 检查跨域配置:将部署WebChat页面的域名加入App Service的CORS允许源列表,开放GET、POST、OPTIONS请求方法;如果开启了身份验证,不要在CORS配置中同时设置允许源为*且开启凭据传递,否则会导致跨域预检请求失败。
  • 验证Bot消息端点可用性:在Azure Bot配置面板中确认消息传递端点为https://myappservicename.azurewebsites.net/api/messages,公网可正常访问,无WAF、IP限制类拦截规则。
  • 校验令牌有效性:DirectLine令牌默认有效期为1小时,若令牌生成后间隔太久再使用会因过期导致连接失败,测试阶段可调整令牌有效期,或在前端实现令牌自动刷新逻辑。

排查时建议先跳过自定义令牌生成逻辑,直接在WebChat测试代码中填入Postman生成的、和对接端点匹配的令牌,先验证基础连通性,再逐步调试自定义接口,避免多问题叠加提升排查难度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 16:39:13