首页 > 解决方案 > 如何解决异常 **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。

我已经添加了最新版本的

如何解决此错误?

非常感谢任何帮助。非常感谢你。

标签: c#amazon-web-servicesxamarinamazon-s3

解决方案


我已成功上传我的文本文件。非常感谢 @AniketBhansali 建议检查内部异常,并尝试 UploadAsync。让我详细说明我的调试过程。

总之,要上传我的文本文件,我

  1. 检查内部异常
  2. 是否上传异步
  3. 将我的凭证从一个 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。


推荐阅读