使用C#调用DynamoDB ListTables方法遇访问权限级别错误求助
解决DynamoDB C#调用ListTables时的“inaccessible due to protection level”错误
别搞静态调用:AmazonDynamoDBClient的
ListTables是实例方法,得先创建客户端实例才能调用,不能直接用类名调用。比如正确写法是:// 先实例化客户端 var client = new AmazonDynamoDBClient(你的访问密钥, 你的密钥, RegionEndpoint.你的区域); // 用实例调用方法 var tableResult = client.ListTables();要是你写
AmazonDynamoDBClient.ListTables(),编译器找不到对应的静态方法,就会抛出这个保护级别错误。核对SDK版本和命名空间:确保你装的是最新的AWSSDK.DynamoDBv2 NuGet包,代码顶部也得引入正确的命名空间:
using Amazon.DynamoDBv2; using Amazon.DynamoDBv2.Model;老版本SDK可能存在方法访问权限的问题,更到稳定版基本能解决。
检查客户端实例的访问权限:如果你的客户端实例是在私有类里定义的,或者实例本身是private成员,当前代码就没法访问它的方法。得把实例的访问修饰符改成public或者internal(同程序集内的话)。
试试异步方法:新版SDK更推荐用异步的
ListTablesAsync,同步方法在某些版本里可能被标记为内部或过时,换异步写法试试:var tableResult = await client.ListTablesAsync();记得把调用这个方法的函数标记为async。
从你贴的截图来看,大概率是静态调用错了或者实例访问权限不够,先查这俩点就行。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

