c# - 如何解决异常 **System.MissingMethodException:** '找不到方法:无效 Amazon.S3.Transfer.TransferUtility.Upload()' (Xamarin AWS S3)
问题描述
我正在阅读 AWS Mobile SDK - Xamarin 开发人员指南中的教程,并且我想将一个文本文件从我的 Android 手机(通过 Xamarin)上传到 AWS S3。这些是 2 个教程:设置适用于 .NET 和 Xamarin 的 AWS 移动开发工具包以及使用Amazon S3 存储和检索文件。
我正在使用该方法void Amazon.S3.Transfer.TransferUtility.Upload(string,string,string)
上传我的文本文件。我尝试运行我的代码,但我不能。**System.MissingMethodException:** 'Method not found: void Amazon.S3.Transfer.TransferUtility.Upload(string,string,string)'
尽管我已经包含了正确的命名空间,但我还是遇到了这个异常。我已经确认该方法void Amazon.S3.Transfer.TransferUtility.Upload(string,string,string)
在namespace Amazon.S3.Transfer
. 下面是我的代码
client = new AmazonS3Client(credentials, bucketRegion);
var fileTransferUtility = new TransferUtility(client);
fileTransferUtility.Upload(_fileName, bucketName, "toDo.txt");
我已经包含了正确的命名空间,例如using Amazon.S3;
using Amazon.S3.Transfer;
上述代码适用于 Windows Presentation Foundation (WPF) 应用程序,但不适用于 Xamarin。
我已经添加了最新版本的
- AWSSDK.Core (v3.3.107.8)
- AWSSDK.S3 (v3.3.111.9)
如何解决此错误?
非常感谢任何帮助。非常感谢你。
解决方案
我已成功上传我的文本文件。非常感谢 @AniketBhansali 建议检查内部异常,并尝试 UploadAsync。让我详细说明我的调试过程。
总之,要上传我的文本文件,我
- 检查内部异常
- 是否上传异步
- 将我的凭证从一个 Amazon Cognito 凭证提供商提供的凭证更改为我用来访问我的 AWS 账户的 IAM 用户
出于某种原因,transferUtility.Upload()
它不起作用,但是transferUtility.UploadAsync()
。
所以起初我检查了像这样的 S3 特定异常
try
{
var fileTransferUtility = new TransferUtility(client);
fileTransferUtility.Upload(_fileName, bucketName, "toDo.txt");
}
catch(AmazonS3Exception exception)
{
Console.WriteLine("Error encountered on server. Message:'{0}' when writing an object", exception.Message);
}
catch (Exception exception)
{
Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", exception.Message);
}
但是,仍然出现相同的异常消息。所以我没有像Upload那样尝试UploadAsync
await fileTransferUtility.UploadAsync(_fileName, bucketName, "toDo.txt");
幸运的是,我收到了一条新的错误消息。Unknown encountered on server. Message:'Object reference not set to an instance of an object' when writing an object
我用 Google 搜索并发现这个Null 引用异常与 AWS S3 API。
从这个问题线程中,我怀疑发生错误是因为我使用了来自 Amazon Cognito 凭证提供者的凭证。
因此,我将凭证更改为用于访问我的 AWS 账户的 IAM 用户,并设法将我的文本文件发送到 AWS S3。
推荐阅读
- git - 安装 microsoft git-credential-manager 后 git push 失败,找不到存储库
- python - 迁移命令未转换未在数据库中创建表。姜戈
- python - sklearn 如何使用多个保存的模型合并和预测数据
- r - 如何在r的生存包中创建一个协变量时间依赖以在“coxph”模型中使用?
- google-chrome - Chrome nativeMessaging 示例在 Windows 上失败
- c# - 添加架构 EF Core 表属性
- java - Toast 正在从附加了后台线程的处理程序中显示。不知道这怎么会发生?
- spring-boot - [LDAP:错误代码 32 - 0000208D:NameErr:DSID-031001EE,问题 2001(NO_OBJECT),数据 0,最佳匹配:''];剩下的名字''
- database - 遇到数据重复时跳过列 ID
- c# - 在对象列表中的字典中按键过滤?