繁体   English   中英

Unity3D中的AWS ListBuckets调用上的ObjectDisposedException

[英]ObjectDisposedException on AWS ListBuckets call in Unity3D

我正在尝试在Unity3D游戏中使用AWS .NET SDK。 我已经使用了3.5 dll,并在我的项目中使用了该dll。 为了测试它们是否都正常工作,我只是尝试列出所有可用的存储桶,我已经使用Cloudberry检查了所有凭据和权限是否正确,因此应该没有问题。

抛出异常:

ObjectDisposedException:在处置对象后使用该对象。 System.Net.HttpWebResponse.CheckDisposed()System.Net.HttpWebResponse.GetResponseHeader(System.String headerName)(包装带检查的远程调用)System.Net.HttpWebResponse:GetResponseHeader(字符串)Amazon.Runtime.Internal.Transform。 HttpWebRequestResponseData.GetHeaderValue(System.String名称)Amazon.S3。内部S3。内部。

逐步执行代码后,该错误似乎出现在读取var res = client.ListBuckets(); 这是正在使用的代码。

public class FileStorage
{
    private const string accessKey = @"access_key";
    private const string secretKey = @"secret_key";
    private const string bucketName = @"bucket_name";

    private AmazonS3Client client;
    private AmazonS3Config config;

    public FileStorage()
    {
        config = new AmazonS3Config
        {
            ServiceURL = "http://s3.amazonaws.com"
        };
    }

    public void ListBuckets()
    {
        var client = new AmazonS3Client(accessKey, secretKey, config);
        var res = client.ListBuckets();
        foreach (S3Bucket b in res.Buckets)
        {
            Debug.Log(b.BucketName);
        }
    }
}

我已经完成了该课程,并将其放入运行.NET 3.5的Visual Studio项目中进行测试,它工作得很好,并列出了我期望的所有存储桶。

该错误感觉无济于事,所以我不确定这是否是库和Unity的问题,或者我的代码有问题。 是什么原因引起的,还是有人知道解决方案?

想要一模一样的东西,并遇到相同的问题。

这不是完美的方法,但这是解决方法:

结帐https://github.com/aws/aws-sdk-net

你必须打补丁

  Amazon.Runtime.Internal.Unmarshaller
      private void Unmarshall(IExecutionContext executionContext)

HttpsResponse被放置在finally块中。 如果您仅对此发表评论,那么您就可以重做。

我认为这是旧的Mono运行时的问题,但我也无法理解为什么这行得通。 但是,由于我只希望它能起作用... :-) GC也会清理响应对象,因此您甚至不会遇到麻烦。

顺便说一句:这实际上真的很容易做到。 只需签出项目。 打开3.5版本。 构建立即为我工作。 因此,这大约需要10分钟。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM