未找到方法:void Amazon.S3.AmazonS3Client..ctor()|带.NET / Xamarin的AmazonS3

问题描述 投票:5回答:1

我目前正在关注Amazon的AWSSDK文档(in particular: this),试图访问Xamarin表单应用程序上的AmazonS3数据。我遇到了一个错误,所以我开始了一个新项目,其中包含了最新的软件包,据我所知,这些软件包都是最新的,并且仍然遇到相同的问题。

这是该类后面的主要代码的当前代码:

public partial class MainPage : ContentPage
{
    private static IAmazonS3 client;
    private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;


    public MainPage()
    {
        InitializeComponent();

        // I have tried each of the following:

        client = new AmazonS3Client();   <--- ERROR
        client = new AmazonS3Client(RegionEndpoint.USWest2);  <-- SIMILAR ERROR
        client = new AmazonS3Client(bucketRegion);  <-- SAME ERROR

        // This has a different error, lack of RegionEndpoint, which is expected, but at least this seems to be recognized
        client = new AmazonS3Client(new AnonymousAWSCredentials());

    }
}

这将在指示的行上导致以下运行时错误:

找不到方法:无效的Amazon.S3.AmazonS3Client..ctor()

我了解MethodNotFoundException通常是旧版本的DLL徘徊,过时的依赖关系,重复的程序集等导致的,但是我是从一个全新的项目中进行部署的,唯一安装的软件包是up-最新的标准Xamarin软件包和Amazon.S3软件包。

什么引起此错误?

c# amazon-web-services xamarin amazon-s3 aws-sdk
1个回答
1
投票

该问题与“旧dll,过时的依赖项”等无关。如果您查看下面的示例,他们不是在尝试调用默认ctor,而是通过桶区域

如果查看Simple cross-platform application using the AWS SDK for .NET(甚至在使用的IDE内的文档中,您会发现使用默认ctor时,您需要:

[运行此应用程序之前,必须在[默认]配置文件或另一个配置文件中指定凭据,然后通过设置AWS_PROFILE环境变量来指定凭据。必须在[默认]配置文件中或通过设置AWS_REGION环境变量来指定区域。

文档还说可以使用App.config。

但是由于我们将其用于Xamarin,因此使用其他一些重载会容易得多。以下是其中一些:

enter image description here

假设您要使用AWSCredentials来生成客户。同样,您在这里有很多选择:enter image description here

注意:初始化客户端时,最好指定RegionEndpoint。在大多数情况下,如果您忘记了,则会得到AmazonClientException: No RegionEndpoint or ServiceURL configured,因此它会提醒您它是必需的。

编辑:由于您的问题的更新,以下是我的更新:您尝试过的规则也适用于那里的ctor。他们正在寻找Xamarin.Forms应用程序不存在的配置文件中的凭据。为了使用客户端,它需要知道其凭据。如果您需要使用客户端,则在初始化期间为它提供一些凭证-使用其他一些AWSCredentials-BasicFederated等,或使用简单的一个-accessKeyId +accessKey

[如果您好奇您尝试过的ctor为什么不起作用,或者他们在幕后正在做什么,那么他们的SDK是开源的here。空ctor的代码为here

© www.soinside.com 2019 - 2024. All rights reserved.