发布未集成LivePerson的Bot后Teams端出现程序集加载异常问题
解决方案
1. 清理CosmosDB中的遗留会话数据
- 登录Azure门户,打开目标CosmosDB账户,进入数据资源管理器
- 找到存储Bot会话状态的容器(默认名称为
botstate),删除所有包含LivePersonConnector.EscalationsConversationData类型标识的文档 - 若业务允许,可直接清空容器内所有历史会话数据,彻底清除旧类型数据残留
2. 添加序列化兼容处理(无需删除历史数据)
在回滚后的Bot代码中配置自定义序列化绑定器,让Newtonsoft.Json能识别旧类型并映射到现有类型:
// 配置CosmosDB存储时添加序列化设置 var cosmosStorageOptions = new CosmosDbStorageOptions { CosmosDbEndpoint = new Uri("<你的CosmosDB端点>"), AuthKey = "<你的CosmosDB密钥>", DatabaseId = "<数据库ID>", ContainerId = "<容器ID>", SerializerSettings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Auto, SerializationBinder = new CustomTypeBinder() } }; // 自定义类型绑定器 public class CustomTypeBinder : ISerializationBinder { public Type BindToType(string assemblyName, string typeName) { // 匹配旧类型,映射到当前使用的会话数据类型 if (typeName.Equals("LivePersonConnector.EscalationsConversationData", StringComparison.Ordinal)) { return typeof(ConversationData); // 替换为你实际的会话数据类型 } // 其他类型正常解析 return Type.GetType($"{typeName}, {assemblyName}"); } public void BindToName(Type serializedType, out string assemblyName, out string typeName) { assemblyName = serializedType.Assembly.FullName; typeName = serializedType.FullName; } }
3. 修复发布权限错误(#ERROR_INSUFFICIENT_ACCESS_TO_SITE_FOLDER)
- 进入Azure App Service门户,打开Bot对应的应用服务
- 前往部署中心,检查部署凭据有效性,必要时重新生成部署凭据
- 打开高级工具 > Kudu,进入调试控制台 > CMD,手动删除
site/wwwroot目录下的LivePersonConnector.dll及相关依赖文件 - 重新打包旧版本代码,确保发布包内无任何LivePerson相关文件后重新发布
- 若问题仍存在,重启App Service实例以清除服务器端缓存
4. 彻底清理Teams客户端缓存
- 完全退出Teams客户端
- 删除本地缓存目录:
- Windows:
%appdata%\Microsoft\Teams - Mac:
~/Library/Application Support/Microsoft/Teams
- Windows:
- 重新登录Teams,发起新会话测试功能
内容的提问来源于stack exchange,提问作者di007
相关产品推荐
相关产品推荐

