C# 将.net上的AWS SDK与localstack一起使用(TransferUtility/S3-设置端点)

C# 将.net上的AWS SDK与localstack一起使用(TransferUtility/S3-设置端点),c#,.net,amazon-web-services,amazon-s3,localstack,C#,.net,Amazon Web Services,Amazon S3,Localstack,我运行了localstack(),并且能够使用aws s3 cli将文件上载到其中 我希望能够将.NET AWS ADK与localstack一起使用。我希望使用以下代码将文件上载到localstack: using (var tfu = new TransferUtility()) { await tfu.UploadAsync(new TransferUtilityUploadRequest {

我运行了localstack(),并且能够使用aws s3 cli将文件上载到其中

我希望能够将.NET AWS ADK与localstack一起使用。我希望使用以下代码将文件上载到localstack:

        using (var tfu = new TransferUtility())
        {
            await tfu.UploadAsync(new TransferUtilityUploadRequest
            {
                Key = key,
                BucketName = bucketName,
                ContentType = document.ContentType,
                Headers = { ["Content-Disposition"] = "attachment; filename=\"test.txt\"" },
                InputStream = stream
            });
        }
我的问题是我不知道如何设置端点,以便SDK而不是aws使用localstack。显然,您可以按照AWS SDK文档中的说明,在appSettings.config中设置
AWSEndpointDefinition
,例如:

当我这样做时,只要我新建一个
TransferUtility
类,我就会得到一个空引用异常-这是在我将任何东西指向我的localstack设置之前

AWS ASK的版本是3.3.0


另一件需要注意的事情是,在文档中的某些地方,它暗示配置应该是xml文件而不是json,当我尝试使用xml文件时,在更新
TransferUtility
时会遇到另一个异常:“无效字符”您可以通过创建S3客户端并将其传递给TransferUtility构造函数来轻松覆盖它

var config = new AmazonS3Config { ServiceURL = "http://localhost:4572" };
var s3client = new AmazonS3Client(config);
如果您的localstack正在为S3使用不同的端口,请不要忘记替换URL

希望这有帮助