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

使用C#调用AWS Lambda遇平台不支持异常求助(SharePoint CSOM场景)

解决AWS Lambda中使用CSOM创建SharePoint列表时的Platform Not Supported异常

这个问题我之前帮同事排查过,核心原因其实很直接:你现在引用的Microsoft.SharePoint.Client.dll和Microsoft.SharePoint.Client.Runtime.dll是仅适配Windows平台的传统.NET Framework版本,而AWS Lambda默认运行在Linux环境中,两者的平台依赖不兼容,自然就抛出了这个异常。下面是具体的解决步骤:

1. 替换为跨平台的SharePoint CSOM NuGet包

微软早就推出了支持.NET Core/.NET 5+的跨平台CSOM包,完美适配Linux环境。你需要:

  • 先移除项目里手动添加的那两个Windows专属DLL引用
  • 打开NuGet包管理器,安装Microsoft.SharePointOnline.CSOM(注意是带Online标识的这个包,它整合了所有跨平台所需的组件)

2. 确认AWS Lambda运行时配置

  • 确保你的Lambda函数选择的是.NET 6或.NET 8这类支持跨平台的运行时,别选传统的.NET Framework运行时(除非你特意需要Windows环境的Lambda,但跨平台方案更灵活成本也更低)
  • 如果确实要用到Windows环境的Lambda,创建函数时需选择Windows操作系统,并对应匹配.NET Framework运行时,但这种场景很少见

3. 代码适配(几乎无需改动)

跨平台CSOM包的API和传统版本基本一致,你的创建列表代码可以直接复用,比如:

using Microsoft.SharePoint.Client;

var siteUrl = "https://your-sharepoint-site.sharepoint.com";
var userName = "your-account@domain.com";
var password = "your-password";

using (var context = new ClientContext(siteUrl))
{
    var securePassword = new System.Security.SecureString();
    foreach (char c in password) securePassword.AppendChar(c);
    context.Credentials = new SharePointOnlineCredentials(userName, securePassword);

    // 创建自定义列表的逻辑
    var listCreationInfo = new ListCreationInformation
    {
        Title = "业务数据列表",
        TemplateType = (int)ListTemplateType.GenericList
    };
    var newList = context.Web.Lists.Add(listCreationInfo);
    context.Load(newList);
    context.ExecuteQuery();
}

4. 部署包关键注意事项

  • 发布到Lambda时,一定要选择Linux作为目标运行时(Visual Studio发布向导里可以设置)
  • 不要手动添加任何Windows特定的依赖文件,NuGet会自动打包适配Linux的组件

额外排查点

如果本地Windows测试正常,但部署到Lambda后仍报错,大概率是部署包里混入了Windows版本的依赖,建议先清理项目的bin/obj目录,再重新编译发布。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:13:29